From cb3c960361e1d30bef8bfc085a251b88b706c0df Mon Sep 17 00:00:00 2001 From: hidnplayr Date: Mon, 4 Nov 2013 16:14:13 +0000 Subject: [PATCH] HTTP library: correctly parse URL's that have no page address git-svn-id: svn://kolibrios.org@4161 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/develop/libraries/http/http.asm | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/programs/develop/libraries/http/http.asm b/programs/develop/libraries/http/http.asm index 900f44003d..6f164b7973 100644 --- a/programs/develop/libraries/http/http.asm +++ b/programs/develop/libraries/http/http.asm @@ -607,7 +607,7 @@ locals pageaddr dd ? endl - DEBUGF 1, "URL: %s\n", [URL] + DEBUGF 1, "parsing URL: %s\n", [URL] ; remove any leading protocol text mov esi, [URL] @@ -622,7 +622,7 @@ endl dec ecx jnz .loop1 -; URL invalid ! + DEBUGF 1, "Invalid URL\n" xor eax, eax ret @@ -636,15 +636,16 @@ endl sub esi, [URL] ; calculate total length of URL mov [urlsize], esi -;;; FIXME: urls with no pageaddr are not parsed correctly!! ; now look for page delimiter - it's a '/' character mov ecx, esi ; URL length mov edi, [URL] mov al, '/' repne scasb + jne @f dec edi ; return one char, '/' must be part of the pageaddr inc ecx ; + @@: push ecx edi ; remember the pointer and length of pageaddr mov ecx, edi @@ -662,7 +663,7 @@ endl xor al, al stosb - mov [pageaddr], null_str ; assume there is no pageaddr + mov [pageaddr], str_slash ; assume there is no pageaddr pop esi ecx test ecx, ecx jz .no_page @@ -770,7 +771,7 @@ base64_table db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' db '0123456789+/' str_cl db 'content-length', 0 -null_str db 0 +str_slash db '/', 0 str_te db 'transfer-encoding', 0 include_debug_strings