diff options
author | John Stultz <john.stultz@linaro.org> | 2020-02-13 04:41:30 +0000 |
---|---|---|
committer | Amit Pundir <amit.pundir@linaro.org> | 2020-02-13 20:43:17 +0530 |
commit | 80c095d43a9a9a0b981312d5bfe187844fd2ba66 (patch) | |
tree | e423a6989249d8504cc867b7add1cf5fc9d757c9 | |
parent | a95578fd5955b88aa05acb60c5d8a4edf86bba5a (diff) |
*Commit Message*
Change-Id: Ifc70bd7110c24dde3671a6dc3fd88df98ae89b30
-rw-r--r-- | qcom/tqftpserv/translate.c | 24 |
1 files 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); |