urlmon: Avoid accessing an uninitialized variable.

Alexandre Goujon ale.goujon at gmail.com
Sun Jun 5 03:18:18 CDT 2011


---
 dlls/urlmon/uri.c |   19 +++++++------------
 1 files changed, 7 insertions(+), 12 deletions(-)

diff --git a/dlls/urlmon/uri.c b/dlls/urlmon/uri.c
index f12f826..7daed95 100644
--- a/dlls/urlmon/uri.c
+++ b/dlls/urlmon/uri.c
@@ -3767,12 +3767,12 @@ static void setup_port(const UriBuilder *builder, parse_data *data, DWORD flags)
 }
 
 static HRESULT validate_path(const UriBuilder *builder, parse_data *data, DWORD flags) {
-    const WCHAR *ptr = NULL;
+    static const WCHAR nullW[] = {0};
+    const WCHAR *ptr = nullW;
     const WCHAR *component;
-    const WCHAR **pptr;
-    DWORD expected_len;
-    BOOL check_len = TRUE;
-    BOOL valid = FALSE;
+    const WCHAR **pptr = &ptr;
+    DWORD expected_len = -1;
+    BOOL valid;
 
     if(builder->path) {
         ptr = builder->path;
@@ -3781,14 +3781,9 @@ static HRESULT validate_path(const UriBuilder *builder, parse_data *data, DWORD
               builder->uri && builder->uri->path_start > -1) {
         ptr = builder->uri->canon_uri+builder->uri->path_start;
         expected_len = builder->uri->path_len;
-    } else {
-        static const WCHAR nullW[] = {0};
-        ptr = nullW;
-        check_len = FALSE;
     }
 
     component = ptr;
-    pptr = &ptr;
 
     /* How the path is validated depends on what type of
      * URI it is.
@@ -3796,9 +3791,9 @@ static HRESULT validate_path(const UriBuilder *builder, parse_data *data, DWORD
     valid = data->is_opaque ?
         parse_path_opaque(pptr, data, flags) : parse_path_hierarchical(pptr, data, flags);
 
-    if(!valid || (check_len && expected_len != data->path_len)) {
+    if(!valid || (expected_len != -1 && expected_len != data->path_len)) {
         TRACE("(%p %p %x): Invalid path component %s.\n", builder, data, flags,
-            debugstr_wn(component, check_len ? expected_len : -1) );
+            debugstr_wn(component, expected_len) );
         return INET_E_INVALID_URL;
     }
 
-- 
1.7.4.1




More information about the wine-patches mailing list