Why do you think apache gets a segfault?
The only thing is the the 'domainname' key is missing from
the hash although it should display the content of
__domainname (on non-bsd systems)
I'm willing to fix it if someone comes up with a proper patch
that also honors BSD. It's not very critical I think (until I
miss the obvious).
- Markus
On Sun, Mar 24, 2002 at 12:16:41PM +0100, Vergoz Michael (SYSDOOR) wrote :
>
> Date: Sun, 24 Mar 2002 12:03:42 +0100
> From: "Vergoz Michael (SYSDOOR)" <[EMAIL PROTECTED]>
> Subject: posix_uname another bug @^|[@#\@^#~@{[?
> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:0.9.8) Gecko/20020214
> To: php-qa <[EMAIL PROTECTED]>
> >From - Sun Mar 24 12:03:43 2002
> X-Mozilla-Status2: 00000000
>
> refere include file : sys/utsname.h !
> You can see if the macro __USE_GNU is set the char returned are
> 'domainname' else the char are '__domainname' #@\[@~\
> You know this function can do a apache segfault ?!
> Becarful cuz domainename doesn't exist on freebsd !
>
> there is the current (PHP-4.2.0RC1) code on : ext/posix/posix.c
>
> /* {{{ proto array posix_uname(void)
> Get system name (POSIX.1, 4.4.1) */
> PHP_FUNCTION(posix_uname)
> {
> struct utsname u;
>
> if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE)
> return;
>
> if (uname(&u) < 0) {
> POSIX_G(last_error) = errno;
> RETURN_FALSE;
> }
>
> if (array_init(return_value) == FAILURE) {
> // TODO: Should we issue a warning here so we don't have ambiguity
> // with the above return value ?
> RETURN_FALSE;
> }
>
> add_assoc_string(return_value, "sysname", u.sysname, 1);
> add_assoc_string(return_value, "nodename", u.nodename, 1);
> add_assoc_string(return_value, "release", u.release, 1);
> add_assoc_string(return_value, "version", u.version, 1);
> add_assoc_string(return_value, "machine", u.machine, 1);
> #ifdef _GNU_SOURCE /* i'm okay */
> add_assoc_string(return_value, "domainname", u.domainname, 1); /* <-
> {|^@#\|^[#\ */
> #endif
> }
> /* }}} */
>
> /*--------------------------------------------------------Fixed
> code--------------------------------------------------*/
>
> /* {{{ proto array posix_uname(void)
> Get system name (POSIX.1, 4.4.1) */
> PHP_FUNCTION(posix_uname)
> {
> struct utsname u;
>
> if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE)
> return;
>
> if (uname(&u) < 0) {
> POSIX_G(last_error) = errno;
> RETURN_FALSE;
> }
>
> if (array_init(return_value) == FAILURE) {
> // TODO: Should we issue a warning here so we don't have ambiguity
> // with the above return value ?
> RETURN_FALSE;
> }
>
> add_assoc_string(return_value, "sysname", u.sysname, 1);
> add_assoc_string(return_value, "nodename", u.nodename, 1);
> add_assoc_string(return_value, "release", u.release, 1);
> add_assoc_string(return_value, "version", u.version, 1);
> add_assoc_string(return_value, "machine", u.machine, 1);
> #ifdef _GNU_SOURCE
> #ifdef __USE_GNU
> add_assoc_string(return_value, "domainname", u.domainname, 1);
> #else
> add_assoc_string(return_value, "domainname", u.__domainname, 1);
> #endif
> #endif
> }
> /* }}} */
>
>
> --
> PHP Development Mailing List <http://www.php.net/>
> To unsubscribe, visit: http://www.php.net/unsub.php
--
Please always Cc to me when replying to me on the lists.
GnuPG Key: http://guru.josefine.at/~mfischer/C2272BD0.asc
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, visit: http://www.php.net/unsub.php