imagehlp: improve last error handling in ImageGetCertificateData

Juan Lang juan.lang at gmail.com
Tue Dec 11 19:49:43 CST 2007


> Humm,  I wrote a test program mimicking the calls in the application I
> am working on and found this behavior. The app was passing in a NULL
> buffer and a pointer for the size set to 0,  We where exiting with TRUE
> and not setting the last error correctly which was confusing the app.

In that case, this part of the patch is still suspect:

-    if( *RequiredLength < size )
+    if( !Certificate )
     {
         *RequiredLength = size;
-        SetLastError( ERROR_INSUFFICIENT_BUFFER );
-        return FALSE;
+        return TRUE;

I'm not sure how Windows behaves in this case, but if it returns FALSE
(ERROR_INSUFFICIENT_BUFFER) when Certificate is NULL and
*RequiredLength is 0, I'd be surprised if it returned TRUE when
Certificate is NULL and *RequiredLength is large enough.

> I am not sure how i would set up a regression test since wouldn't we
> need an exe with a certificate in it to test with? There must be a
> programmatic way to set that up.

Indeed, I thought the same thing, and tried copying in bits from
kernel32/tests/process.c to create an image.  I failed to create one
that Windows would accept, so I gave up.  You can blame that on my
laziness, though.  Feel free to try yourself.
--Juan



More information about the wine-devel mailing list