comparison Python/pythonrun.c @ 52818:cb58c973985c 2.6

Merged revisions 71152 via svnmerge from svn+ssh://pythondev@svn.python.org/python/trunk ........ r71152 | matthias.klose | 2009-04-04 16:18:13 +0200 (Sa, 04 Apr 2009) | 3 lines - 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:19:56 +0000
parents e2818b9f964b
children 2abc3b4bce7c
comparison
equal deleted inserted replaced
52810:74cf20a61bec 52818:cb58c973985c
893 PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, 893 PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit,
894 PyCompilerFlags *flags) 894 PyCompilerFlags *flags)
895 { 895 {
896 PyObject *m, *d, *v; 896 PyObject *m, *d, *v;
897 const char *ext; 897 const char *ext;
898 int set_file_name = 0, ret; 898 int set_file_name = 0, ret, len;
899 899
900 m = PyImport_AddModule("__main__"); 900 m = PyImport_AddModule("__main__");
901 if (m == NULL) 901 if (m == NULL)
902 return -1; 902 return -1;
903 d = PyModule_GetDict(m); 903 d = PyModule_GetDict(m);
910 return -1; 910 return -1;
911 } 911 }
912 set_file_name = 1; 912 set_file_name = 1;
913 Py_DECREF(f); 913 Py_DECREF(f);
914 } 914 }
915 ext = filename + strlen(filename) - 4; 915 len = strlen(filename);
916 ext = filename + len - (len > 4 ? 4 : 0);
916 if (maybe_pyc_file(fp, filename, ext, closeit)) { 917 if (maybe_pyc_file(fp, filename, ext, closeit)) {
917 /* Try to run a pyc file. First, re-open in binary */ 918 /* Try to run a pyc file. First, re-open in binary */
918 if (closeit) 919 if (closeit)
919 fclose(fp); 920 fclose(fp);
920 if ((fp = fopen(filename, "rb")) == NULL) { 921 if ((fp = fopen(filename, "rb")) == NULL) {