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) {