Re: [Fwd: posix_uname another bug @^|[@#\@^#~@{[?]
| From: | Markus Fischer | Date: | Sun, 24 Mar 2002 11:51:14 +0000 |
| Subject: | Re: [Fwd: posix_uname another bug @^|[@#\@^#~@{[?] | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-81713@lists.php.net to get a copy of this message | ||
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)" <mvergoz@sysdoor.com>
> 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 <php-qa@lists.php.net>
> >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