ID: 6559
User Update by: [EMAIL PROTECTED]
Status: Closed
Bug Type: YP/NIS related
Description: yp_first() and yp_next() results handled wrong in ext/yp/yp.c

Reaction to [2001-03-18 17:05:11] [EMAIL PROTECTED]'s comment:

You're wrong in saying that having a newline at the end
of a key/value pair is dependent on the data you put
in the map. Sure, if you put newlines in the map
you'll bound to get them out; BUT there's allways
an extra newline added.

>From the SunOS 7 and 8 manuals (ypclnt(3N)):

For  each  outkey  and  outval, two extra bytes of
memory are allocated at the end  that  contain  NEWLINE
and null, respectively, but these two bytes are not
reflected in outkeylen or outvallen .

Meaning for keys x and value y, you'll get:

outkeylen = 1; outvallen = 1;
outkey[] = { 0x78, 0x0a, 0x00 };
outval[] = { 0x79, 0x0a, 0x00 };

Which requires chopping off the newline in case you
must use the key and value as a C string. The latter
is precisely what php needs/does, the former was
missing from the glue code.

Proof me wrong ;-). I've observed the original code


Previous Comments:

[2001-03-18 17:05:11] [EMAIL PROTECTED]
This depends on the data you put in the map in the first place. Properly created maps 
do not include linebreaks.

It's not up to PHP to second guess the administrator of the YP domain. :)


[2000-09-05 14:31:58] [EMAIL PROTECTED]
The key/value pairs that libnsl's yp_first/yp_next return contain
a trailing NEWLINE as per NIS specs. These NEWLINEs are
not chopped off before returning the key/value pair to the users's PHP
code. Hence you end up with newlines in PHP hashes.

Below is the context diff for the fix.


*** yp.c.orig   Mon Jun  5 21:47:45 2000
--- yp.c        Tue Sep  5 19:37:54 2000
*** 151,156 ****
--- 151,158 ----
+       outkey[outkeylen] = 0;
+       outval[outvallen] = 0;
*** 175,180 ****
--- 177,184 ----
+       outkey[outkeylen] = 0;
+       outval[outvallen] = 0;


Full Bug description available at:

PHP Development Mailing List <>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to