ID: 31433
User updated by: dgrimes at scvl dot com
Reported By: dgrimes at scvl dot com
-Status: Open
+Status: Closed
Bug Type: Reproducible crash
Operating System: SCO OpenServer 5
PHP Version: 4CVS, 5CVS (2005-01-22)
New Comment:
I have opted to close this issue. After applying the change to
MAXPATHLEN, the problem no longer exists.
Previous Comments:
------------------------------------------------------------------------
[2005-01-29 14:27:10] dgrimes at scvl dot com
After additional testing I found that MAXPATHLEN needs to be increased
to 4096. Although 1024 kept PHP from core dumpping, certain functions
like shell_exec would not execute properly.
Dean
------------------------------------------------------------------------
[2005-01-28 05:06:14] dgrimes at scvl dot com
Here is the fix:
main/php.h
set MAXPATHLEN from 256 to 1024
diff -c php.h.org php.h
*** php.h.org Thu Jan 27 20:54:04 2005
--- php.h Thu Jan 27 20:56:13 2005
***************
*** 250,256 ****
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
# else
! # define MAXPATHLEN 256 /* Should be safe for any weird systems
that do no
t define it */
# endif
#endif
--- 250,256 ----
# ifdef PATH_MAX
# define MAXPATHLEN PATH_MAX
# else
! # define MAXPATHLEN 1024 /* Should be safe for any weird systems
that do n
ot define it */
# endif
#endif
------------------------------------------------------------------------
[2005-01-26 17:36:42] dgrimes at scvl dot com
SCO sent this to me:
Dean, Please have a look at this TA and let me know if you think this
will help your situation. It appears that this is applicable to
OSr5.0.0 to 5.0.6.
Thanks,
Todd
*********************** TA # 100815 **********************************
Calling realpath(S) from within my program causes a core dump.
KEYWORDS: v5 5.0.0 osr5 openserver dev sys development system ds getcwd
realpath memory fault coredump core dump ENGREF LTD-246-807
RELEASE: SCO OpenServer Development System Release 5.0.0
PROBLEM: If I make a call to realpath(S) from within my source I find
that, when compiled, the resulting binary will terminate with
the error:
Memory fault(coredump)
CAUSE: The character buffer passed to realpath(S) is being passed
to
a function called pathcanon(). This function is calling
getcwd(S)
with a buffer size of 4096 bytes. getcwd(S) clears this
buffer
and overruns the stack causing the core dump.
SOLUTION: This problem has been reported to SCO Engineering.
To work around this problem, make sure that the character
buffer passed to realpath(S) is 4096 bytes in size:
char buff[4096];
realpath(filename, buff);
where 'filename' is the name of the file whose path you wish
to resolve.
--------------------------------------
Thanks,
Dean
------------------------------------------------------------------------
[2005-01-26 06:18:49] [EMAIL PROTECTED]
See also bug #23665
------------------------------------------------------------------------
[2005-01-26 06:14:08] [EMAIL PROTECTED]
You could ask SCO support why the realpath() function is called from
libsocket.so.2 and not from libc.so.1..
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/31433
--
Edit this bug report at http://bugs.php.net/?id=31433&edit=1