diff options
author | Nick Kralevich <nnk@google.com> | 2014-01-18 01:12:08 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2014-01-18 01:12:08 +0000 |
commit | eb665350d13d36f8974da332674adf5df58859f3 (patch) | |
tree | 6c5bad6d8f79a8654a120f625cc04ead235f5d35 /adb | |
parent | 1571dac49fee8d7304a082a787aed15520ed48b4 (diff) | |
parent | 555376331f436fb519c182677c22d8299ead5523 (diff) | |
download | system_core-eb665350d13d36f8974da332674adf5df58859f3.zip system_core-eb665350d13d36f8974da332674adf5df58859f3.tar.gz system_core-eb665350d13d36f8974da332674adf5df58859f3.tar.bz2 |
am 55537633: am 78af6c4c: am 0a72d293: Merge "Fix "adb push /sdcard/filename""
* commit '555376331f436fb519c182677c22d8299ead5523':
Fix "adb push /sdcard/filename"
Diffstat (limited to 'adb')
-rw-r--r-- | adb/file_sync_service.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/adb/file_sync_service.c b/adb/file_sync_service.c index c30f9fb..577fb8f 100644 --- a/adb/file_sync_service.c +++ b/adb/file_sync_service.c @@ -43,11 +43,10 @@ static int mkdirs(char *name) { int ret; char *x = name + 1; - unsigned int uid, gid; + uid_t uid = -1; + gid_t gid = -1; unsigned int mode = 0775; uint64_t cap = 0; - uid = getuid(); - gid = getgid(); if(name[0] != '/') return -1; @@ -172,8 +171,8 @@ static int fail_errno(int s) return fail_message(s, strerror(errno)); } -static int handle_send_file(int s, char *path, unsigned int uid, - unsigned int gid, mode_t mode, char *buffer) +static int handle_send_file(int s, char *path, uid_t uid, + gid_t gid, mode_t mode, char *buffer) { syncmsg msg; unsigned int timestamp = 0; @@ -201,11 +200,13 @@ static int handle_send_file(int s, char *path, unsigned int uid, fail_errno(s); errno = 0; } - /* fchown clears the setuid bit - restore it if present */ - if(fchmod(fd, mode) != 0) { - fail_errno(s); - errno = 0; - } + + /* + * fchown clears the setuid bit - restore it if present. + * Ignore the result of calling fchmod. It's not supported + * by all filesystems. b/12441485 + */ + fchmod(fd, mode); } for(;;) { @@ -350,10 +351,9 @@ static int do_send(int s, char *path, char *buffer) #else { #endif - unsigned int uid, gid; + uid_t uid = -1; + gid_t gid = -1; uint64_t cap = 0; - uid = getuid(); - gid = getgid(); /* copy user permission bits to "group" and "other" permissions */ mode |= ((mode >> 3) & 0070); |