Fix use-after-free errors.
authorBen Pfaff <blp@cs.stanford.edu>
Fri, 8 Jul 2022 17:51:59 +0000 (10:51 -0700)
committerBen Pfaff <blp@cs.stanford.edu>
Fri, 8 Jul 2022 17:51:59 +0000 (10:51 -0700)
Found by GCC 12.1.1.

src/data/casewriter-translator.c
src/output/spv/spv-legacy-decoder.c

index c750c7c73b21f69cdfd852bebfb4b7d3de39d40e..ef3040688716958c321cb7f274df03ef8699cce6 100644 (file)
@@ -100,8 +100,8 @@ casewriter_translator_convert_to_reader (struct casewriter *writer UNUSED,
 {
   struct casewriter_translator *ct = ct_;
   struct casereader *reader = casewriter_make_reader (ct->subwriter);
-  free (ct);
   ct->destroy (ct->aux);
+  free (ct);
   return reader;
 }
 
index e103dd842e8247379cbfc670803c24bc9f3a8f83..84397a04ab3179bc80be903689b0477efb969cbd 100644 (file)
@@ -1893,10 +1893,10 @@ decode_spvdx_table (const struct spvdx_visualization *v, const char *subtype,
 
       if (!progress)
         {
-          free (nodes);
           error = xasprintf ("Table has %zu variables with circular or "
                              "unresolved references, including variable %s.",
                              n_nodes, nodes[0]->id);
+          free (nodes);
           goto exit;
         }
     }