am 78af6c4c: am 0a72d293: Merge "Fix "adb push /sdcard/filename""

* commit '78af6c4c946fec01b232c92d40eb6fd202490e3e':
  Fix "adb push /sdcard/filename"
This commit is contained in:
Nick Kralevich 2014-01-18 01:08:47 +00:00 committed by Android Git Automerger
commit 555376331f

View file

@ -43,11 +43,10 @@ static int mkdirs(char *name)
{ {
int ret; int ret;
char *x = name + 1; char *x = name + 1;
unsigned int uid, gid; uid_t uid = -1;
gid_t gid = -1;
unsigned int mode = 0775; unsigned int mode = 0775;
uint64_t cap = 0; uint64_t cap = 0;
uid = getuid();
gid = getgid();
if(name[0] != '/') return -1; if(name[0] != '/') return -1;
@ -172,8 +171,8 @@ static int fail_errno(int s)
return fail_message(s, strerror(errno)); return fail_message(s, strerror(errno));
} }
static int handle_send_file(int s, char *path, unsigned int uid, static int handle_send_file(int s, char *path, uid_t uid,
unsigned int gid, mode_t mode, char *buffer) gid_t gid, mode_t mode, char *buffer)
{ {
syncmsg msg; syncmsg msg;
unsigned int timestamp = 0; unsigned int timestamp = 0;
@ -201,11 +200,13 @@ static int handle_send_file(int s, char *path, unsigned int uid,
fail_errno(s); fail_errno(s);
errno = 0; errno = 0;
} }
/* fchown clears the setuid bit - restore it if present */
if(fchmod(fd, mode) != 0) { /*
fail_errno(s); * fchown clears the setuid bit - restore it if present.
errno = 0; * Ignore the result of calling fchmod. It's not supported
} * by all filesystems. b/12441485
*/
fchmod(fd, mode);
} }
for(;;) { for(;;) {
@ -350,10 +351,9 @@ static int do_send(int s, char *path, char *buffer)
#else #else
{ {
#endif #endif
unsigned int uid, gid; uid_t uid = -1;
gid_t gid = -1;
uint64_t cap = 0; uint64_t cap = 0;
uid = getuid();
gid = getgid();
/* copy user permission bits to "group" and "other" permissions */ /* copy user permission bits to "group" and "other" permissions */
mode |= ((mode >> 3) & 0070); mode |= ((mode >> 3) & 0070);