Mercurial > cpython-lru_cache-weakref
comparison Python/pythonrun.c @ 52817:634502be8dcc legacy-trunk
- Issue #3845: In PyRun_SimpleFileExFlags avoid invalid memory access with
short file names.
| author | Matthias Klose <doko@ubuntu.com> |
|---|---|
| date | Sat, 04 Apr 2009 14:18:13 +0000 |
| parents | 5cf74137c0f8 |
| children | 12079c3d4b77 |
comparison
equal
deleted
inserted
replaced
| 52815:e745cef8f407 | 52817:634502be8dcc |
|---|---|
| 896 PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, | 896 PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, |
| 897 PyCompilerFlags *flags) | 897 PyCompilerFlags *flags) |
| 898 { | 898 { |
| 899 PyObject *m, *d, *v; | 899 PyObject *m, *d, *v; |
| 900 const char *ext; | 900 const char *ext; |
| 901 int set_file_name = 0, ret; | 901 int set_file_name = 0, ret, len; |
| 902 | 902 |
| 903 m = PyImport_AddModule("__main__"); | 903 m = PyImport_AddModule("__main__"); |
| 904 if (m == NULL) | 904 if (m == NULL) |
| 905 return -1; | 905 return -1; |
| 906 d = PyModule_GetDict(m); | 906 d = PyModule_GetDict(m); |
| 913 return -1; | 913 return -1; |
| 914 } | 914 } |
| 915 set_file_name = 1; | 915 set_file_name = 1; |
| 916 Py_DECREF(f); | 916 Py_DECREF(f); |
| 917 } | 917 } |
| 918 ext = filename + strlen(filename) - 4; | 918 len = strlen(filename); |
| 919 ext = filename + len - (len > 4 ? 4 : 0); | |
| 919 if (maybe_pyc_file(fp, filename, ext, closeit)) { | 920 if (maybe_pyc_file(fp, filename, ext, closeit)) { |
| 920 /* Try to run a pyc file. First, re-open in binary */ | 921 /* Try to run a pyc file. First, re-open in binary */ |
| 921 if (closeit) | 922 if (closeit) |
| 922 fclose(fp); | 923 fclose(fp); |
| 923 if ((fp = fopen(filename, "rb")) == NULL) { | 924 if ((fp = fopen(filename, "rb")) == NULL) { |
