From 964eff11de37896812b353cd9f6b51949842f80f Mon Sep 17 00:00:00 2001 From: twwang <920347125@qq.com> Date: Tue, 11 Aug 2020 11:49:02 +0800 Subject: [PATCH] Eliminate potential risks for not handling format file path & socket resource modify coding for not handling format file path for ApiGen.cpp, close ime socket resource in some scence --- external/android-emugl/host/tools/emugen/ApiGen.cpp | 11 +++++++++-- src/anbox/platform/sdl/platform.cpp | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/external/android-emugl/host/tools/emugen/ApiGen.cpp b/external/android-emugl/host/tools/emugen/ApiGen.cpp index 142bf0e..b204740 100644 --- a/external/android-emugl/host/tools/emugen/ApiGen.cpp +++ b/external/android-emugl/host/tools/emugen/ApiGen.cpp @@ -20,6 +20,7 @@ #include "strUtils.h" #include #include +#include #include @@ -58,9 +59,15 @@ void ApiGen::printHeader(FILE *fp) const int ApiGen::genProcTypes(const std::string &filename, SideType side) { - FILE *fp = fopen(filename.c_str(), "wt"); + const char* untrustPath = filename.c_str(); + char path[PATH_MAX] = {0}; + if (realpath(untrustPath, path) == NULL) { + return -1; + } + + FILE *fp = fopen(path, "wt"); if (fp == NULL) { - perror(filename.c_str()); + perror(path); return -1; } printHeader(fp); diff --git a/src/anbox/platform/sdl/platform.cpp b/src/anbox/platform/sdl/platform.cpp index 9594935..cf0b323 100644 --- a/src/anbox/platform/sdl/platform.cpp +++ b/src/anbox/platform/sdl/platform.cpp @@ -176,6 +176,7 @@ void Platform::create_ime_socket() { socket_addr.sun_family = AF_UNIX; if (ime_socket_file_.length() >= strlen(socket_addr.sun_path) - 1) { ERROR("Create ime failed, socket path too long"); + close(ime_socket); return; } strcpy(socket_addr.sun_path, ime_socket_file_.c_str()); -- Gitee