]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
cc: Fix memleak when building extension response
authorDavid Goulet <dgoulet@torproject.org>
Wed, 23 Feb 2022 18:22:59 +0000 (13:22 -0500)
committerDavid Goulet <dgoulet@torproject.org>
Wed, 23 Feb 2022 19:40:04 +0000 (14:40 -0500)
Fixes #40575

Signed-off-by: David Goulet <dgoulet@torproject.org>
src/core/or/congestion_control_common.c

index fb56014315b63bd7e07ec74021b75a70dff004eb..93d3a9f2c5ebb875ab5e4937add08198f2c4aa9f 100644 (file)
@@ -1303,6 +1303,7 @@ congestion_control_build_ext_response(const circuit_params_t *our_params,
 
     ret = trn_extension_field_cc_encoded_len(cc_field);
     if (BUG(ret <= 0)) {
+      trn_extension_field_free(field);
       goto err;
     }
     size_t field_len = ret;
@@ -1313,6 +1314,7 @@ congestion_control_build_ext_response(const circuit_params_t *our_params,
     ret = trn_extension_field_cc_encode(field_array,
               trn_extension_field_getlen_field(field), cc_field);
     if (BUG(ret <= 0)) {
+      trn_extension_field_free(field);
       goto err;
     }
 
@@ -1340,11 +1342,7 @@ congestion_control_build_ext_response(const circuit_params_t *our_params,
   ret = 0;
 
  err:
-  if (ext) {
-    trn_extension_free(ext);
-  } else {
-    trn_extension_field_free(field);
-  }
+  trn_extension_free(ext);
   trn_extension_field_cc_free(cc_field);
   return (int)ret;
 }