summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Elliott Hughes <enh@google.com> 2013-12-11 22:02:20 +0000
committer Android Git Automerger <android-git-automerger@android.com> 2013-12-11 22:02:20 +0000
commite2fbb2ac6802e54d67a910da790711fbb2f09201 (patch)
tree0cc929a58c8dba9ae911a28451c8d5bb93f24816
parent5f41b262a5edb9f2ffb44fff77dc75d5cabec2ba (diff)
parentd3dd83c67a216f91654aa7d007c92eb82f567528 (diff)
am d3dd83c6: am 5b9437df: am 4a72b306: Merge "fix possible buffer overrun and memory leak"
* commit 'd3dd83c67a216f91654aa7d007c92eb82f567528': fix possible buffer overrun and memory leak
-rw-r--r--core/jni/android_util_Binder.cpp15
1 files changed, 11 insertions, 4 deletions
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index 3ac2225ebbdb..259d0303c532 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -943,13 +943,20 @@ static jboolean android_os_BinderProxy_isBinderAlive(JNIEnv* env, jobject obj)
}
static int getprocname(pid_t pid, char *buf, size_t len) {
- char filename[20];
+ char filename[32];
FILE *f;
- sprintf(filename, "/proc/%d/cmdline", pid);
+ snprintf(filename, sizeof(filename), "/proc/%d/cmdline", pid);
f = fopen(filename, "r");
- if (!f) { *buf = '\0'; return 1; }
- if (!fgets(buf, len, f)) { *buf = '\0'; return 2; }
+ if (!f) {
+ *buf = '\0';
+ return 1;
+ }
+ if (!fgets(buf, len, f)) {
+ *buf = '\0';
+ fclose(f);
+ return 2;
+ }
fclose(f);
return 0;
}