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);
}