[xmlsec] Xmlsec Issue on Linux x86_64, XMLSEC_NO_SIZE_T

Nolan Hurlburt nolanhurlburt at itiva.com
Tue Mar 20 20:27:13 PST 2007


Hi list,

I ran into a bit of a problem recently using the xmlsec library today on 
a Linux x86_64 box. Here’s the situation:

1) The xmlsec library was compiled using the standard configure, make. ( 
--enable-debugging, --with-libxlst=no )
2) A piece of code that signs an xml doc was compiled and linked it to 
the library.
3) The code involved a call to xmlSecDSigCtxSign()
result = ( xmlSecDSigCtxSign( dsigCtx, signNode ) >= 0);

This was failing because the struct in the library appeared to be 
different then the one that our code was passing in. ( Memory was 
shifted when it entered the xmlSecDSigCtxSign function ) Note: the code 
works fine on 32-bit Windows and Linux.

We determined this was because of a compile flag that is set when 
compiling the library: -DXMLSEC_NO_SIZE_T. (configure.in ln: 128)

This results in a size_t being an unsigned int rather than size_t . 
(xmlsec.h line:43)

Apparently this is defined when configure detects a 64-bit system. 
Obviously when we compiled our code we didn’t compile with this defined 
causing a difference in the size of the struct relative to the piece of 
code.

We can resolve this in two ways:

1) Not defining XMLSEC_NO_SIZE_T when compiling the library.
2) Compiling our application with XMLSEC_NO_SIZE_T defined.

Is anyone familiar with the implications of each of these actions?

Thank you kindly,

Nolan

-- 
Nolan Hurlburt
nolanhurlburt at itiva.com





More information about the xmlsec mailing list