odd char * arithmetic in nginx binary
Hassan Syed
h.a.syed at gmail.com
Wed Oct 20 19:31:27 MSD 2010
I'm working on a authentication module and I need to produce a string
without any inherent fixed structure, so I would just using ngx_sprintf and
pointer arithmetic. However something insidious is going on during
compilation. I have played arround with u_char * as well as char *'s. The
gdb debug sessions goes as follows:
-----------------------------------------------------------------------------------------------------------------------
680 char * buf = (char *) ngx_palloc( r->pool, sz);
(gdb) n
681 if ( buf == NULL)
(gdb) n
687 if( parameter_count > 0) {
(gdb) n
688 buf = (char *) ngx_sprintf((u_char *)buf,"%V?", &
alcf->redirect_url);
(gdb) n
690 buf++; buf++;// buf++; buf++; buf++;
(gdb) p buf
$1 = 0x6d2de0 "lala?"
(gdb) n
698 if( parameters[i]->len != 0) {
(gdb) p buf
$2 = 0x6d2de7 ""
-----------------------------------------------------------------------------------------------------------------------
I should see 2 = 0x6d2de2 "la?" as output
I have only incremented the char pointer twice, yet the pointer moves
forward 7 bytes (and when I do a +=5 it moves forward 10 bytes). I am hoping
someone can tell me what is going on here, as t his has
completely flabbergasted me.
Regards
Hassan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://nginx.org/pipermail/nginx-devel/attachments/20101020/75ed1c39/attachment.html>
More information about the nginx-devel
mailing list