summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJP Abgrall <jpa@google.com>2013-12-03 14:52:39 -0800
committerJP Abgrall <jpa@google.com>2014-03-07 17:29:39 -0800
commit4ce2f838e78592d0b93776b73ca4de855a423dde (patch)
tree86a037fcf852a2f2781c2cd5cf6fdd74d5179135
parent0c3d19ff3db7b04081a7a729a81642c5903f741a (diff)
downloadsystem_core-4ce2f838e78592d0b93776b73ca4de855a423dde.zip
system_core-4ce2f838e78592d0b93776b73ca4de855a423dde.tar.gz
system_core-4ce2f838e78592d0b93776b73ca4de855a423dde.tar.bz2
adb: Don't clobber block devices during push
In the past, an adb push would ALWAYS unlink the target path. Now, we only links and regular files (and links). This allows the following to work: adb shell ls -l /dev/block/mmcblk0p8 # brw------- root root 179, 8 2013-11-28 07:43 mmcblk0p8 adb push n7.jpa.mda.post_jb_encryption.raw /dev/block/mmcblk0p8 Bug: 11984121 Change-Id: I982c7a1cd87986621f2bebdcb41c4e281f67f772
-rw-r--r--adb/file_sync_service.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/adb/file_sync_service.c b/adb/file_sync_service.c
index e981c2a..25bfdc9 100644
--- a/adb/file_sync_service.c
+++ b/adb/file_sync_service.c
@@ -339,11 +339,14 @@ static int do_send(int s, char *path, char *buffer)
if(!tmp || errno) {
mode = 0644;
is_link = 0;
+ } else {
+ struct stat st;
+ /* Don't delete files before copying if they are not "regular" */
+ if(lstat(path, &st) || S_ISREG(st.st_mode) || S_ISLNK(st.st_mode)) {
+ adb_unlink(path);
+ }
}
- adb_unlink(path);
-
-
#ifdef HAVE_SYMLINKS
if(is_link)
ret = handle_send_link(s, path, buffer);