mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	_Py_wrealpath() requires the size of the output buffer
This commit is contained in:
		
							parent
							
								
									a4a759515e
								
							
						
					
					
						commit
						015f4d87ab
					
				
					 3 changed files with 6 additions and 4 deletions
				
			
		| 
						 | 
					@ -41,7 +41,8 @@ PyAPI_FUNC(int) _Py_wreadlink(
 | 
				
			||||||
#ifdef HAVE_REALPATH
 | 
					#ifdef HAVE_REALPATH
 | 
				
			||||||
PyAPI_FUNC(wchar_t*) _Py_wrealpath(
 | 
					PyAPI_FUNC(wchar_t*) _Py_wrealpath(
 | 
				
			||||||
    const wchar_t *path,
 | 
					    const wchar_t *path,
 | 
				
			||||||
    wchar_t *resolved_path);
 | 
					    wchar_t *resolved_path,
 | 
				
			||||||
 | 
					    size_t resolved_path_size);
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
PyAPI_FUNC(wchar_t*) _Py_wgetcwd(
 | 
					PyAPI_FUNC(wchar_t*) _Py_wgetcwd(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -321,7 +321,8 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#ifdef HAVE_REALPATH
 | 
					#ifdef HAVE_REALPATH
 | 
				
			||||||
wchar_t*
 | 
					wchar_t*
 | 
				
			||||||
_Py_wrealpath(const wchar_t *path, wchar_t *resolved_path)
 | 
					_Py_wrealpath(const wchar_t *path,
 | 
				
			||||||
 | 
					              wchar_t *resolved_path, size_t resolved_path_size)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    char *cpath;
 | 
					    char *cpath;
 | 
				
			||||||
    char cresolved_path[PATH_MAX];
 | 
					    char cresolved_path[PATH_MAX];
 | 
				
			||||||
| 
						 | 
					@ -336,7 +337,7 @@ _Py_wrealpath(const wchar_t *path, wchar_t *resolved_path)
 | 
				
			||||||
    PyMem_Free(cpath);
 | 
					    PyMem_Free(cpath);
 | 
				
			||||||
    if (res == NULL)
 | 
					    if (res == NULL)
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
    r = mbstowcs(resolved_path, cresolved_path, PATH_MAX);
 | 
					    r = mbstowcs(resolved_path, cresolved_path, resolved_path_size);
 | 
				
			||||||
    if (r == (size_t)-1 || r >= PATH_MAX) {
 | 
					    if (r == (size_t)-1 || r >= PATH_MAX) {
 | 
				
			||||||
        errno = EINVAL;
 | 
					        errno = EINVAL;
 | 
				
			||||||
        return NULL;
 | 
					        return NULL;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1742,7 +1742,7 @@ sys_update_path(int argc, wchar_t **argv)
 | 
				
			||||||
#else /* All other filename syntaxes */
 | 
					#else /* All other filename syntaxes */
 | 
				
			||||||
    if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) {
 | 
					    if (_HAVE_SCRIPT_ARGUMENT(argc, argv)) {
 | 
				
			||||||
#if defined(HAVE_REALPATH)
 | 
					#if defined(HAVE_REALPATH)
 | 
				
			||||||
        if (_Py_wrealpath(argv0, fullpath)) {
 | 
					        if (_Py_wrealpath(argv0, fullpath, PATH_MAX)) {
 | 
				
			||||||
            argv0 = fullpath;
 | 
					            argv0 = fullpath;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
#endif
 | 
					#endif
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue