diff options
| author | 2013-12-11 22:02:20 +0000 | |
|---|---|---|
| committer | 2013-12-11 22:02:20 +0000 | |
| commit | e2fbb2ac6802e54d67a910da790711fbb2f09201 (patch) | |
| tree | 0cc929a58c8dba9ae911a28451c8d5bb93f24816 | |
| parent | 5f41b262a5edb9f2ffb44fff77dc75d5cabec2ba (diff) | |
| parent | d3dd83c67a216f91654aa7d007c92eb82f567528 (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.cpp | 15 |
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; } |