adb: win32: fix key files reading/writing
The issue is that adb uses fopen() with "e" (presumably to open the file
with O_CLOEXEC), but that flag causes MSVCRT.DLL to return an error. So
when adb_auth_host.cpp goes to read or write the adbkey files, it fails.
The quick fix is to not use the "e" option on adb host code since it
isn't necessary there, compared to adbd.
An alternative fix would be to have a fopen() wrapper on Windows that
filters out the "e" option.
Bug: http://b/21806456
Bug: https://code.google.com/p/android/issues/detail?id=175077
Change-Id: I7d8ba2847dab0ed558ffe156e79093251eb253c9
Signed-off-by: Spencer Low <CompareAndSwap@gmail.com>
(cherry picked from commit 9b9603148b
)
This commit is contained in:
parent
350926ef2f
commit
d62bce8040
|
@ -173,7 +173,7 @@ static int write_public_keyfile(RSA *private_key, const char *private_key_path)
|
|||
return 0;
|
||||
}
|
||||
|
||||
outfile = fopen(path, "we");
|
||||
outfile = fopen(path, "w");
|
||||
if (!outfile) {
|
||||
D("Failed to open '%s'\n", path);
|
||||
return 0;
|
||||
|
@ -239,7 +239,7 @@ static int generate_key(const char *file)
|
|||
|
||||
old_mask = umask(077);
|
||||
|
||||
f = fopen(file, "we");
|
||||
f = fopen(file, "w");
|
||||
if (!f) {
|
||||
D("Failed to open '%s'\n", file);
|
||||
umask(old_mask);
|
||||
|
@ -273,7 +273,7 @@ static int read_key(const char *file, struct listnode *list)
|
|||
{
|
||||
D("read_key '%s'\n", file);
|
||||
|
||||
FILE* fp = fopen(file, "re");
|
||||
FILE* fp = fopen(file, "r");
|
||||
if (!fp) {
|
||||
D("Failed to open '%s': %s\n", file, strerror(errno));
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue