From bc28c20524ae955b17bd095a064ec7cf3ab18412 Mon Sep 17 00:00:00 2001 From: Peter Howkins Date: Wed, 4 Apr 2018 22:42:06 +0100 Subject: [PATCH] dtinfo: fix coverity issues related to null checks after dereference --- cde/programs/dtinfo/DtMmdb/api/base.C | 28 +++++++++++-------- cde/programs/dtinfo/DtMmdb/api/info_base.C | 7 +++-- .../dtinfo/dtinfo/src/Basic/NodeViewInfo.C | 3 +- .../dtinfo/src/UAS/DtSR/DtSR_SearchEngine.C | 3 +- .../dtinfo/dtinfogen/infolib/etc/AusText.C | 2 +- .../dtinfogen/infolib/etc/dtinfogen_worker.c | 3 +- 6 files changed, 24 insertions(+), 22 deletions(-) diff --git a/cde/programs/dtinfo/DtMmdb/api/base.C b/cde/programs/dtinfo/DtMmdb/api/base.C index 29a9e9da..a38f7ca8 100644 --- a/cde/programs/dtinfo/DtMmdb/api/base.C +++ b/cde/programs/dtinfo/DtMmdb/api/base.C @@ -70,29 +70,33 @@ base::base(object_dict* obj_dict, num_cset_ptrs(0), num_list_ptrs(0), f_obj_dict(obj_dict) { - int len = MIN(strlen(base_dir), PATHSIZ - 1); - if ( base_dir ) + if ( base_dir ) { + int len = MIN(strlen(base_dir), PATHSIZ - 1); *((char *) memcpy (base_path, base_dir, len) + len) = '\0'; - else + } else { base_path[0] = 0; + } - len = MIN(strlen(base_nm), PATHSIZ - 1); - if ( base_nm ) + if ( base_nm ) { + int len = MIN(strlen(base_nm), PATHSIZ - 1); *((char *) memcpy (base_name, base_nm, len) + len) = '\0'; - else + } else { base_name[0] = 0; + } - len = MIN(strlen(base_ds), PATHSIZ - 1); - if ( base_ds ) + if ( base_ds ) { + int len = MIN(strlen(base_ds), PATHSIZ - 1); *((char *) memcpy (base_desc, base_ds, len) + len) = '\0'; - else + } else { base_desc[0] = 0; + } - len = MIN(strlen(base_uid_str), UIDSIZ - 1); - if ( base_uid_str ) + if ( base_uid_str ) { + int len = MIN(strlen(base_uid_str), UIDSIZ - 1); *((char *) memcpy (base_uid, base_uid_str, len) + len) = '\0'; - else + } else { base_uid[0] = 0; + } if ( set_nms ) while ( info_base_set_names[num_cset_ptrs] ) diff --git a/cde/programs/dtinfo/DtMmdb/api/info_base.C b/cde/programs/dtinfo/DtMmdb/api/info_base.C index ff503a47..6d6a568c 100644 --- a/cde/programs/dtinfo/DtMmdb/api/info_base.C +++ b/cde/programs/dtinfo/DtMmdb/api/info_base.C @@ -72,11 +72,12 @@ debug(cerr, base_dir); debug(cerr, base_nm); debug(cerr, base_ds); */ - int len = MIN(strlen(base_locale), PATHSIZ - 1); - if (base_locale) + if (base_locale) { + int len = MIN(strlen(base_locale), PATHSIZ - 1); *((char *) memcpy (info_base_locale, base_locale, len) + len) = '\0'; - else + } else { *info_base_locale = 0; + } char* nm ; int i; diff --git a/cde/programs/dtinfo/dtinfo/src/Basic/NodeViewInfo.C b/cde/programs/dtinfo/dtinfo/src/Basic/NodeViewInfo.C index 6a303061..3ec72eb0 100644 --- a/cde/programs/dtinfo/dtinfo/src/Basic/NodeViewInfo.C +++ b/cde/programs/dtinfo/dtinfo/src/Basic/NodeViewInfo.C @@ -530,8 +530,7 @@ highlight_search_hit(_DtCvSegment* seg, unsigned int vcc, unsigned int len) } DtCvStrVcLenSync(seg); - if (sibling->handle.string.string) - free (sibling->handle.string.string); + free (sibling->handle.string.string); if (sibling->client_use) { delete (SegClientData*)sibling->client_use; sibling->client_use = NULL; diff --git a/cde/programs/dtinfo/dtinfo/src/UAS/DtSR/DtSR_SearchEngine.C b/cde/programs/dtinfo/dtinfo/src/UAS/DtSR/DtSR_SearchEngine.C index b2262f9c..105e134b 100644 --- a/cde/programs/dtinfo/dtinfo/src/UAS/DtSR/DtSR_SearchEngine.C +++ b/cde/programs/dtinfo/dtinfo/src/UAS/DtSR/DtSR_SearchEngine.C @@ -129,8 +129,7 @@ build_bc_url(UAS_String bookcase_path) fprintf(stderr, "(DEBUG) URL=\"%s\"\n", (char*)bc_locator); #endif - if (bc_path) - free(bc_path); + free(bc_path); return bc_locator; } diff --git a/cde/programs/dtinfo/dtinfogen/infolib/etc/AusText.C b/cde/programs/dtinfo/dtinfogen/infolib/etc/AusText.C index 853fd250..108a5108 100644 --- a/cde/programs/dtinfo/dtinfogen/infolib/etc/AusText.C +++ b/cde/programs/dtinfo/dtinfogen/infolib/etc/AusText.C @@ -77,7 +77,7 @@ AusText::~AusText() { store->deActivateZone ( f_base ); - if ( store ) { delete store; } + delete store; if ( f_search_store ) { delete f_search_store; } } diff --git a/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c b/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c index 5af25843..f4328270 100644 --- a/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c +++ b/cde/programs/dtinfo/dtinfogen/infolib/etc/dtinfogen_worker.c @@ -828,8 +828,7 @@ makeAbsPathEnv(char *var) snprintf(newVar, pathlen, "%s=%s", var, newPath); putenv(newVar); - if (newPath) - XtFree(newPath); + XtFree(newPath); return newVar; } -- 2.25.1