Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec3d44cc authored by Sungmin Choi's avatar Sungmin Choi
Browse files

fix possible buffer overrun and memory leak

Use snprintf instead of sprintf and fclose() before return.

Change-Id: I3ed193464cc0dc90e9935ae19162667ad367628b
parent 9b76b2d2
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -951,13 +951,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;
}