diff --git a/external/android-emugl/host/tools/emugen/ApiGen.cpp b/external/android-emugl/host/tools/emugen/ApiGen.cpp index f912cb54b1061ee5c3b75993cb7c83d9b6632934..fa1eb883f123190753775f9c652bb1475de389f8 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 /* Define this to 1 to enable support for the 'isLarge' variable flag * that instructs the encoder to send large data buffers by a direct @@ -56,9 +57,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 05128a171ea0d35c4dad3a0c742f9655e8cced5f..5472047680b473cd7e9d293c6ab8086a121e567e 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());