Skip to content

Conversation

@zcbenz
Copy link
Contributor

On Windows when compiling with unicode support, "LoadLibrary" will become "LoadLibraryW" and feeding it with an ANSCII string will cause crash in runtime.

Using TEXT() macro can make the code work no matter whether the unicode support is on.

@bnoordhuis
Copy link
Member

/cc @piscisaureus

@piscisaureus
Copy link
Contributor

-1
Just use the A or W version explicitly

@zcbenz
Copy link
ContributorAuthor

@piscisaureus Will you accept the commit if I change it to use LoadLibraryA?

And FYI, in V8 and OpenSSL they chose to use TEXT() macro instead of A or W version of API, I'm not quite sure about the reason but using TEXT() seems more consistent:
https://github.com/iojs/io.js/search?utf8=✓&q=LoadLibrary

@piscisaureus
Copy link
Contributor

@piscisaureus Will you accept the commit if I change it to use LoadLibraryA?

I'll accept it if you change it to use LoadLibraryW to make it look like this:

hnd_advapi32=LoadLibraryW(L"advapi32.dll");

The reason is that LoadLibraryA just converts the name from the "active ansi character set" to utf16 and then calls LoadLibraryW internally. The TEXT() macro is a relic from times where people were targeting Windows NT (with unicode support) and 95/98 (no unicode support) at the same time.

On Windows when compiling with unicode support, "LoadLibrary" will become "LoadLibraryW" and feeding it with an ANSCII string will cause crash in runtime.
@zcbenz
Copy link
ContributorAuthor

Sounds quite reasonable to me, I have updated the patch to use LoadLibraryW.

piscisaureus pushed a commit that referenced this pull request Jan 7, 2015
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: #226 Reviewed-By: Bert Belder <[email protected]>
@piscisaureus
Copy link
Contributor

Thanks! Landed in 604b876.

@piscisaureus
Copy link
Contributor

@zcbenz BTW you may want to upstream the patch to c-ares too. Chances are that your change gets reverted when someone upgrades c-ares.

@zcbenz
Copy link
ContributorAuthor

I have created c-ares/c-ares#25 for the upstream c-ares.

bnoordhuis pushed a commit to bnoordhuis/io.js that referenced this pull request May 11, 2015
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: nodejs#226 Reviewed-By: Bert Belder <[email protected]>
bnoordhuis pushed a commit to bnoordhuis/io.js that referenced this pull request May 11, 2015
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: nodejs#226 Reviewed-By: Bert Belder <[email protected]>
bnoordhuis pushed a commit to bnoordhuis/io.js that referenced this pull request May 12, 2015
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: nodejs#226 Reviewed-By: Bert Belder <[email protected]>
@Fishrock123Fishrock123 mentioned this pull request May 13, 2015
Fishrock123 pushed a commit to Fishrock123/node that referenced this pull request May 19, 2015
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: nodejs#226 Reviewed-By: Bert Belder <[email protected]>
indutny pushed a commit to indutny/io.js that referenced this pull request Feb 4, 2016
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: nodejs#226 Reviewed-By: Bert Belder <[email protected]>
indutny pushed a commit that referenced this pull request Feb 8, 2016
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: #226 Reviewed-By: Bert Belder <[email protected]>
rvagg pushed a commit that referenced this pull request Feb 9, 2016
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: #226 Reviewed-By: Bert Belder <[email protected]>
rvagg pushed a commit that referenced this pull request Feb 9, 2016
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: #226 Reviewed-By: Bert Belder <[email protected]>
@MylesBorins
Copy link
Contributor

This landed upstream in cares... although I'm not sure we are backporting changes to LTS. Should this be backported?

@jasnell
Copy link
Member

Likely safe. SGTM /cc @nodejs/lts

@rvagg
Copy link
Member

@thealphanerd probably not needed, check the diff against v4. This one's a floating patch that kept coming on top of c-ares changes. git log | grep 'src,deps: replace LoadLibrary by LoadLibraryW' (I got confused by this stage while backporting as well).

scovetta pushed a commit to scovetta/node that referenced this pull request Apr 2, 2016
On Windows, when compiling with `UNICODE` defined, `LoadLibrary` becomes `LoadLibraryW`. When an ASCII string is passed to that function it crashes. PR-URL: nodejs#226 Reviewed-By: Bert Belder <[email protected]>
isaacs added a commit to npm/node that referenced this pull request Aug 6, 2019
BUGFIXES * [`27cccfbda`](npm/cli@27cccfb) [nodejs#223](npm/cli#223) vulns → vulnerabilities in npm audit output ([@sapegin](https://github.com/sapegin)) * [`d5e865eb7`](npm/cli@d5e865e) [nodejs#222](npm/cli#222) [nodejs#226](npm/cli#226) install, doctor: don't crash if registry unset ([@dmitrydvorkin](https://github.com/dmitrydvorkin), [@isaacs](https://github.com/isaacs)) * [`5b3890226`](npm/cli@5b38902) [nodejs#227](npm/cli#227) [npm.community#9167](https://npm.community/t/npm-err-cb-never-called-permission-denied/9167/5) Handle unhandledRejections, tell user what to do when encountering an `EACCES` error in the cache. ([@isaacs](https://github.com/isaacs)) DEPENDENCIES * [`77516df6e`](npm/cli@77516df) `[email protected]` ([@isaacs](https://github.com/isaacs)) * [`ceb993590`](npm/cli@ceb9935) `[email protected]` ([@isaacs](https://github.com/isaacs)) * [`4050b9189`](npm/cli@4050b91) `[email protected]` * [nodejs#46](npm/hosted-git-info#46) [nodejs#43](npm/hosted-git-info#43) [nodejs#47](npm/hosted-git-info#47) [nodejs#44](npm/hosted-git-info#44) Add support for GitLab subgroups ([@mterrel](https://github.com/mterrel), [@isaacs](https://github.com/isaacs), [@ybiquitous](https://github.com/ybiquitous)) * [`3b1d629`](npm/hosted-git-info@3b1d629) [nodejs#48](npm/hosted-git-info#48) fix http protocol using sshurl by default ([@fengmk2](https://github.com/fengmk2)) * [`5d4a8d7`](npm/hosted-git-info@5d4a8d7) ignore noCommittish on tarball url generation ([@isaacs](https://github.com/isaacs)) * [`1692435`](npm/hosted-git-info@1692435) use gist tarball url that works for anonymous gists ([@isaacs](https://github.com/isaacs)) * [`d5cf830`](npm/hosted-git-info@d5cf830) Do not allow invalid gist urls ([@isaacs](https://github.com/isaacs)) * [`e518222`](npm/hosted-git-info@e518222) Use LRU cache to prevent unbounded memory consumption ([@iarna](https://github.com/iarna))
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants

@zcbenz@bnoordhuis@piscisaureus@MylesBorins@jasnell@rvagg