Browse Source

Ticket #47740 - Coverity issue in 1.3.3

Description: Coverity 11778 - Resource leak
val was allocated by dbconf_decodeval, which was not freed if propval
failed to create.

Reviewed by [email protected] (Thanks, Mark!)
Noriko Hosoi 11 năm trước cách đây
mục cha
commit
6f51e06c60
1 tập tin đã thay đổi với 5 bổ sung5 xóa
  1. 5 5
      lib/ldaputil/dbconf.c

+ 5 - 5
lib/ldaputil/dbconf.c

@@ -264,20 +264,20 @@ static int dbconf_parse_propval (char *buf, char *ptr,
     propval = (DBPropVal_t *)malloc(sizeof(DBPropVal_t));
 
     if (!propval){
-    	if (encval) free(val);
+        if (encval && val) free(val);
         return LDAPU_ERR_OUT_OF_MEMORY;
     }
     memset((void *)propval, 0, sizeof(DBPropVal_t));
     propval->prop = strdup(prop);
     propval->val = val ? strdup(val) : 0;
 
+    if (encval && val) free(val); /* val was allocated by dbconf_decodeval */
+
     if (!propval->prop || (val && !propval->val)) {
-	dbconf_free_propval(propval);
-	return LDAPU_ERR_OUT_OF_MEMORY;
+        dbconf_free_propval(propval);
+        return LDAPU_ERR_OUT_OF_MEMORY;
     }
 
-    if(encval) free(val);	/* val was allocated by dbconf_decodeval */
-
     insert_dbinfo_propval(db_info, propval);
     return LDAPU_SUCCESS;
 }