Skip to content

_freeze_module.c has several unhandled nulls #123919

Closed

Description

@sobolevn

Bug report

https://github.com/python/cpython/blob/main/Programs/_freeze_module.c has several unhandled nulls.

I have a PR ready:

diff --git Programs/_freeze_module.c Programs/_freeze_module.c
index 2a462a42cda..891e4256e89 100644
--- Programs/_freeze_module.c
+++ Programs/_freeze_module.c
@@ -110,6 +110,9 @@ static PyObject *
 compile_and_marshal(const char *name, const char *text)
 {
     char *filename = (char *) malloc(strlen(name) + 10);
+    if (filename == NULL) {
+        return PyErr_NoMemory();
+    }
     sprintf(filename, "<frozen %s>", name);
     PyObject *code = Py_CompileStringExFlags(text, filename,
                                              Py_file_input, NULL, 0);
@@ -133,6 +136,9 @@ get_varname(const char *name, const char *prefix)
 {
     size_t n = strlen(prefix);
     char *varname = (char *) malloc(strlen(name) + n + 1);
+    if (varname == NULL) {
+        return NULL;
+    }
     (void)strcpy(varname, prefix);
     for (size_t i = 0; name[i] != '\0'; i++) {
         if (name[i] == '.') {
@@ -178,6 +184,11 @@ write_frozen(const char *outpath, const char *inpath, const char *name,
 
     fprintf(outfile, "%s\n", header);
     char *arrayname = get_varname(name, "_Py_M__");
+    if (arrayname == NULL) {
+        fprintf(stderr, "memory error: could not allocate varname\n");
+        fclose(outfile);
+        return -1;
+    }
     write_code(outfile, marshalled, arrayname);
     free(arrayname);

Linked PRs

Activity

  1. self-assigned this
    on Sep 10, 2024
  2. added a commit that references this issue on Sep 10, 2024
  3. added a commit that references this issue on Sep 11, 2024
  4. added a commit that references this issue on Sep 11, 2024
  5. added a commit that references this issue on Sep 11, 2024
  6. added a commit that references this issue on Sep 11, 2024
  7. added a commit that references this issue on Sep 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

type-bugAn unexpected behavior, bug, or error

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions