Author: akhaldi
Date: Sun Jun  5 19:27:31 2016
New Revision: 71559

URL: http://svn.reactos.org/svn/reactos?rev=71559&view=rev
Log:
[JSPROXY] Sync with Wine Staging 1.9.11. CORE-11368

Modified:
    trunk/reactos/dll/win32/jsproxy/main.c
    trunk/reactos/media/doc/README.WINE

Modified: trunk/reactos/dll/win32/jsproxy/main.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/jsproxy/main.c?rev=71559&r1=71558&r2=71559&view=diff
==============================================================================
--- trunk/reactos/dll/win32/jsproxy/main.c      [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/jsproxy/main.c      [iso-8859-1] Sun Jun  5 
19:27:31 2016
@@ -99,7 +99,7 @@
     return HeapFree( GetProcessHeap(), 0, mem );
 }
 
-static inline WCHAR *strdupAW( const char *src, DWORD len )
+static inline WCHAR *strdupAW( const char *src, int len )
 {
     WCHAR *dst = NULL;
     if (src)
@@ -188,14 +188,28 @@
 
     EnterCriticalSection( &cs_jsproxy );
 
-    if (global_script->text)
-    {
-        LeaveCriticalSection( &cs_jsproxy );
-        return FALSE;
-    }
-    if (buffer && buffer->dwStructSize == sizeof(*buffer) && 
buffer->lpszScriptBuffer &&
-        (global_script->text = strdupAW( buffer->lpszScriptBuffer, 
buffer->dwScriptBufferSize ))) ret = TRUE;
-    else if ((global_script->text = load_script( tmpfile ))) ret = TRUE;
+    if (buffer && buffer->dwStructSize == sizeof(*buffer) && 
buffer->lpszScriptBuffer)
+    {
+        DWORD i, len = 0;
+        for (i = 0; i < buffer->dwScriptBufferSize; i++)
+        {
+            if (!buffer->lpszScriptBuffer[i]) break;
+            len++;
+        }
+        if (len == buffer->dwScriptBufferSize)
+        {
+            SetLastError( ERROR_INVALID_PARAMETER );
+            LeaveCriticalSection( &cs_jsproxy );
+            return FALSE;
+        }
+        heap_free( global_script->text );
+        if ((global_script->text = strdupAW( buffer->lpszScriptBuffer, len ))) 
ret = TRUE;
+    }
+    else
+    {
+        heap_free( global_script->text );
+        if ((global_script->text = load_script( tmpfile ))) ret = TRUE;
+    }
 
     LeaveCriticalSection( &cs_jsproxy );
     return ret;
@@ -627,9 +641,18 @@
 
     EnterCriticalSection( &cs_jsproxy );
 
-    if (!global_script->text) goto done;
-    if (!(urlW = strdupAW( url, len_url ))) goto done;
-    if (hostname && !(hostnameW = strdupAW( hostname, len_hostname ))) goto 
done;
+    if (!global_script->text)
+    {
+        SetLastError( ERROR_CAN_NOT_COMPLETE );
+        goto done;
+    }
+    if (hostname && len_hostname < strlen( hostname ))
+    {
+        SetLastError( ERROR_INSUFFICIENT_BUFFER );
+        goto done;
+    }
+    if (!(urlW = strdupAW( url, -1 ))) goto done;
+    if (hostname && !(hostnameW = strdupAW( hostname, -1 ))) goto done;
 
     TRACE( "%s\n", debugstr_w(global_script->text) );
     ret = run_script( global_script->text, urlW, hostnameW, proxy, len_proxy );

Modified: trunk/reactos/media/doc/README.WINE
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=71559&r1=71558&r2=71559&view=diff
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Sun Jun  5 19:27:31 2016
@@ -86,7 +86,7 @@
 reactos/dll/win32/itircl              # Synced to WineStaging-1.9.4
 reactos/dll/win32/itss                # Synced to WineStaging-1.9.4
 reactos/dll/win32/jscript             # Synced to WineStaging-1.9.11
-reactos/dll/win32/jsproxy             # Synced to WineStaging-1.9.4
+reactos/dll/win32/jsproxy             # Synced to WineStaging-1.9.11
 reactos/dll/win32/loadperf            # Synced to WineStaging-1.9.4
 reactos/dll/win32/localspl            # Synced to WineStaging-1.9.4
 reactos/dll/win32/localui             # Synced to WineStaging-1.9.4


Reply via email to