[ 
https://issues.apache.org/jira/browse/XERCESC-2179?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16966698#comment-16966698
 ] 

martin goodall commented on XERCESC-2179:
-----------------------------------------

the code is wrong - on a 64 bit platform, LPDWORD is a far dword which is 64 
bits (I think we all agree). I think the thing that's wrong in the above text 
is that "unsigned int" (32 bits) was being used as the variable, not unsigned 
"unsigned long" (64 bits). unsigned int is 32 bits and platform dependent. seeĀ 
[https://docs.microsoft.com/en-us/cpp/cpp/data-type-ranges?view=vs-2019] which 
documents the lengths. Also at the end of the day, printf...sizeof() is pretty 
conclusive......as well as the code no longer segsĀ :)

> access violation in win32transservice.cpp with 64 bit compile
> -------------------------------------------------------------
>
>                 Key: XERCESC-2179
>                 URL: https://issues.apache.org/jira/browse/XERCESC-2179
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: DOM
>    Affects Versions: 3.2.2
>            Reporter: martin goodall
>            Assignee: Alberto Massari
>            Priority: Blocker
>             Fix For: 3.2.3
>
>         Attachments: Win32TransService.cpp
>
>
> calls to ::Reg... to get registry info are passing in stack variables that 
> are 8 bytes long into functions that overwrite 16 bytes, causing memory 
> overwrite and very random segs.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to