On 21.04.14 04:56, Ted Unangst wrote: > Also, can you include diffs inline please? One diff per email. Maybe > just one or two emails to start, then try sending the rest after we > see how that goes?
fix memory leak in a2i_ASN1_ENUMERATED, a2i_ASN1_STRING and a2i_ASN1_INTEGER, in case of of goto err Index: f_enum.c =================================================================== RCS file: /cvs/src/lib/libssl/src/crypto/asn1/f_enum.c,v retrieving revision 1.7 diff -u -r1.7 f_enum.c --- f_enum.c 19 Apr 2014 06:43:34 -0000 1.7 +++ f_enum.c 21 Apr 2014 03:29:56 -0000 @@ -163,8 +163,6 @@ if (sp == NULL) { ASN1err(ASN1_F_A2I_ASN1_ENUMERATED, ERR_R_MALLOC_FAILURE); - if (s != NULL) - free(s); goto err; } s = sp; @@ -196,12 +194,11 @@ } bs->length = num; bs->data = s; - ret = 1; + return (1); -err: - if (0) { err_sl: - ASN1err(ASN1_F_A2I_ASN1_ENUMERATED, ASN1_R_SHORT_LINE); - } + ASN1err(ASN1_F_A2I_ASN1_ENUMERATED, ASN1_R_SHORT_LINE); +err: + free(s); return (ret); } Index: f_int.c =================================================================== RCS file: /cvs/src/lib/libssl/src/crypto/asn1/f_int.c,v retrieving revision 1.11 diff -u -r1.11 f_int.c --- f_int.c 19 Apr 2014 06:43:34 -0000 1.11 +++ f_int.c 21 Apr 2014 03:29:56 -0000 @@ -167,8 +167,6 @@ if (sp == NULL) { ASN1err(ASN1_F_A2I_ASN1_INTEGER, ERR_R_MALLOC_FAILURE); - if (s != NULL) - free(s); goto err; } s = sp; @@ -200,12 +198,11 @@ } bs->length = num; bs->data = s; - ret = 1; + return (1); -err: - if (0) { err_sl: - ASN1err(ASN1_F_A2I_ASN1_INTEGER, ASN1_R_SHORT_LINE); - } + ASN1err(ASN1_F_A2I_ASN1_INTEGER, ASN1_R_SHORT_LINE); +err: + free(s); return (ret); } Index: f_string.c =================================================================== RCS file: /cvs/src/lib/libssl/src/crypto/asn1/f_string.c,v retrieving revision 1.9 diff -u -r1.9 f_string.c --- f_string.c 19 Apr 2014 06:43:34 -0000 1.9 +++ f_string.c 21 Apr 2014 03:29:56 -0000 @@ -159,8 +159,6 @@ if (sp == NULL) { ASN1err(ASN1_F_A2I_ASN1_STRING, ERR_R_MALLOC_FAILURE); - if (s != NULL) - free(s); goto err; } s = sp; @@ -192,12 +190,11 @@ } bs->length = num; bs->data = s; - ret = 1; + return (1); -err: - if (0) { err_sl: - ASN1err(ASN1_F_A2I_ASN1_STRING, ASN1_R_SHORT_LINE); - } + ASN1err(ASN1_F_A2I_ASN1_STRING, ASN1_R_SHORT_LINE); +err: + free(s); return (ret); }