From 80c095d43a9a9a0b981312d5bfe187844fd2ba66 Mon Sep 17 00:00:00 2001 From: John Stultz Date: Thu, 13 Feb 2020 04:41:30 +0000 Subject: TODO: TQFTPSERV: ANDROID: fixes for upstream *Commit Message* Change-Id: Ifc70bd7110c24dde3671a6dc3fd88df98ae89b30 --- qcom/tqftpserv/translate.c | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/qcom/tqftpserv/translate.c b/qcom/tqftpserv/translate.c index e95dee5..3cf7d14 100644 --- a/qcom/tqftpserv/translate.c +++ b/qcom/tqftpserv/translate.c @@ -45,7 +45,11 @@ #define READONLY_PATH "/readonly/firmware/image/" #define READWRITE_PATH "/readwrite/" +#ifndef ANDROID #define FIRMWARE_BASE "/lib/firmware/" +#else +#define FIRMWARE_BASE "/vendor/firmware/" +#endif /** * translate_readonly() - open "file" residing with remoteproc firmware @@ -64,7 +68,7 @@ static int translate_readonly(const char *file) { char firmware_value[PATH_MAX]; - char firmware_attr[32]; + char firmware_attr[PATH_MAX]; char path[PATH_MAX]; struct dirent *de; int firmware_fd; @@ -89,11 +93,12 @@ static int translate_readonly(const char *file) if (!strcmp(de->d_name, ".") || !strcmp(de->d_name, "..")) continue; - if (strlen(de->d_name) + sizeof("/firmware") > sizeof(firmware_attr)) + if (strlen(de->d_name) + strlen("/firmware") > sizeof(firmware_attr)) continue; strcpy(firmware_attr, de->d_name); strcat(firmware_attr, "/firmware"); + firmware_fd = openat(class_fd, firmware_attr, O_RDONLY); if (firmware_fd < 0) continue; @@ -103,6 +108,7 @@ static int translate_readonly(const char *file) if (n < 0) { continue; } + firmware_value[n] = 0; if (strlen(FIRMWARE_BASE) + strlen(firmware_value) + 1 + strlen(file) + 1 > sizeof(path)) @@ -142,6 +148,7 @@ static int translate_readwrite(const char *file, int flags) int ret; int fd; +#ifndef ANDROID ret = mkdir("/tmp/tqftpserv", 0700); if (ret < 0 && errno != EEXIST) { warn("failed to create /tmp/tqftpserv"); @@ -153,6 +160,19 @@ static int translate_readwrite(const char *file, int flags) warn("failed top open /tmp/tqftpserv"); return -1; } +#else + ret = mkdir("/data/vendor/tmp/tqftpserv", 0700); + if (ret < 0 && errno != EEXIST) { + warn("failed to create /data/vendor/tmp/tqftpserv"); + return -1; + } + + base = open("/data/vendor/tmp/tqftpserv", O_RDONLY | O_DIRECTORY); + if (base < 0) { + warn("failed top open /data/vendor/tmp/tqftpserv"); + return -1; + } +#endif fd = openat(base, file, flags, 0600); close(base); -- cgit v1.2.3