summaryrefslogtreecommitdiffstats
path: root/adb
diff options
context:
space:
mode:
authorNick Kralevich <nnk@google.com>2014-01-18 01:12:08 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-01-18 01:12:08 +0000
commiteb665350d13d36f8974da332674adf5df58859f3 (patch)
tree6c5bad6d8f79a8654a120f625cc04ead235f5d35 /adb
parent1571dac49fee8d7304a082a787aed15520ed48b4 (diff)
parent555376331f436fb519c182677c22d8299ead5523 (diff)
downloadsystem_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.c26
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);