Browse code

webkernel: fix header and cookies parsing

Dario Rodriguez authored on 13/07/2014 21:39:56
Showing 1 changed files
... ...
@@ -665,7 +665,7 @@ wk_uri_getheader(wk_uri *uri, char *header, char *defaultvalue)
665 665
         if(uri==NULL || uri->headers==NULL || header==NULL)
666 666
                 return(NULL);
667 667
         len=strlen(header);
668
-        for(n=0,ptr=uri->headers;*ptr!='\0';ptr++,n++) {
668
+        for(n=0,ptr=uri->headers;*ptr!='\0';ptr+=strlen(ptr)+1,n++) {
669 669
                 if(memcmp(ptr,header,len)==0 && ptr[len]==':' && ptr[len+1]==' ')
670 670
                         return(ptr+len+2);
671 671
         }
... ...
@@ -679,7 +679,7 @@ wk_uri_getheaderbynum(wk_uri *uri, int num)
679 679
         char *ptr;
680 680
         if(uri==NULL || uri->headers==NULL)
681 681
                 return(NULL);
682
-        for(n=0,ptr=uri->headers;*ptr!='\0';ptr++,n++) {
682
+        for(n=0,ptr=uri->headers;*ptr!='\0';ptr+=strlen(ptr)+1,n++) {
683 683
                 if(n==num)
684 684
                         return(ptr);
685 685
         }
... ...
@@ -736,7 +736,7 @@ wk_uri_getcookie(wk_uri *uri, char *cookiename, int *len)
736 736
         if(uri==NULL || uri->headers==NULL || cookiename==NULL || len==NULL)
737 737
                 return(NULL);
738 738
         namelen=strlen(cookiename);
739
-        for(n=0,header=uri->headers;*header!='\0';header++,n++) {
739
+        for(n=0,header=uri->headers;*header!='\0';header+=strlen(header)+1,n++) {
740 740
                 if(memcmp(header,"Cookie: ",8)!=0 && memcmp(header,"cookie: ",8)!=0)
741 741
                         continue;
742 742
                 for(ptr=header+8;*ptr!='\0';ptr=((*next!='\0')?next+1:next)) {
... ...
@@ -764,7 +764,7 @@ wk_uri_getcookie(wk_uri *uri, char *cookiename, int *len)
764 764
                                 end--;
765 765
                         /* cookie found, return it */
766 766
                         *len=end-sep;
767
-                        return(ptr);
767
+                        return(sep);
768 768
                 }
769 769
         }
770 770
         return(NULL);