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

Commit a35affb5 authored by Dan Albert's avatar Dan Albert Committed by Gerrit Code Review
Browse files

Merge "Turn on -Wformat-nonliteral."

parents a6241a02 459df8f3
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -15,8 +15,9 @@ adb_version := $(shell git -C $(LOCAL_PATH) rev-parse --short=12 HEAD 2>/dev/nul

ADB_COMMON_CFLAGS := \
    -Wall -Wextra -Werror \
    -Wno-unused-parameter \
    -Wformat-nonliteral \
    -Wno-missing-field-initializers \
    -Wno-unused-parameter \
    -DADB_REVISION='"$(adb_version)"' \

# libadb
+2 −2
Original line number Diff line number Diff line
@@ -277,8 +277,8 @@ asocket *create_remote_socket(unsigned id, atransport *t);
void connect_to_remote(asocket *s, const char *destination);
void connect_to_smartsocket(asocket *s);

void fatal(const char *fmt, ...);
void fatal_errno(const char *fmt, ...);
void fatal(const char *fmt, ...) ATTRIBUTE_FORMAT(1, 2);
void fatal_errno(const char *fmt, ...) ATTRIBUTE_FORMAT(1, 2);

void handle_packet(apacket *p, atransport *t);

+36 −40
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@
#include "mincrypt/rsa.h"
#undef RSA_verify

#include <base/logging.h>
#include <base/strings.h>
#include <cutils/list.h>

@@ -56,8 +57,10 @@
#include <openssl/base64.h>
#endif

#define ANDROID_PATH   ".android"
#define ADB_KEY_FILE   "adbkey"
#include "adb_utils.h"

const char kAndroidPath[] = ".android";
const char kAdbKeyFile[] = "adbkey";

struct adb_private_key {
    struct listnode node;
@@ -295,64 +298,58 @@ static int read_key(const char *file, struct listnode *list)
    return 1;
}

static int get_user_keyfilepath(char *filename, size_t len)
{
    const char *format, *home;
    char android_dir[PATH_MAX];
    struct stat buf;
static bool get_user_keyfilepath(std::string* filename) {
    CHECK(filename != nullptr);

#ifdef _WIN32
    const char* home = getenv("ANDROID_SDK_HOME");
    if (home == nullptr) {
        char path[PATH_MAX];
    home = getenv("ANDROID_SDK_HOME");
    if (!home) {
        SHGetFolderPath(NULL, CSIDL_PROFILE, NULL, 0, path);
        home = path;
    }
    format = "%s\\%s";
#else
    home = getenv("HOME");
    if (!home)
        return -1;
    format = "%s/%s";
    const char* home = getenv("HOME");
    if (home == nullptr)
        return false;
#endif

    D("home '%s'\n", home);

    if (snprintf(android_dir, sizeof(android_dir), format, home,
                        ANDROID_PATH) >= (int)sizeof(android_dir))
        return -1;
    const std::string android_dir = android::base::Join(
        std::vector<std::string>({home, kAndroidPath}), OS_PATH_SEPARATOR);

    if (stat(android_dir, &buf)) {
        if (adb_mkdir(android_dir, 0750) < 0) {
            D("Cannot mkdir '%s'", android_dir);
            return -1;
    if (!directory_exists(android_dir)) {
        if (adb_mkdir(android_dir.c_str(), 0750) == -1) {
            D("Cannot mkdir '%s'", android_dir.c_str());
            return false;
        }
    }

    return snprintf(filename, len, format, android_dir, ADB_KEY_FILE);
    *filename = android::base::Join(
        std::vector<std::string>({android_dir, kAdbKeyFile}),
        OS_PATH_SEPARATOR);
    return true;
}

static int get_user_key(struct listnode *list)
{
    struct stat buf;
    char path[PATH_MAX];
    int ret;

    ret = get_user_keyfilepath(path, sizeof(path));
    if (ret < 0 || ret >= (signed)sizeof(path)) {
    std::string path;
    if (!get_user_keyfilepath(&path)) {
        D("Error getting user key filename");
        return 0;
    }

    D("user key '%s'\n", path);
    D("user key '%s'\n", path.c_str());

    if (stat(path, &buf) == -1) {
        if (!generate_key(path)) {
    if (!file_exists(path)) {
        if (!generate_key(path.c_str())) {
            D("Failed to generate new key\n");
            return 0;
        }
    }

    return read_key(path, list);
    return read_key(path.c_str(), list);
}

static void get_vendor_keys(struct listnode* key_list) {
@@ -411,27 +408,26 @@ void *adb_auth_nextkey(void *current)

int adb_auth_get_userkey(unsigned char *data, size_t len)
{
    char path[PATH_MAX];
    int ret = get_user_keyfilepath(path, sizeof(path) - 4);
    if (ret < 0 || ret >= (signed)(sizeof(path) - 4)) {
    std::string path;
    if (!get_user_keyfilepath(&path)) {
        D("Error getting user key filename");
        return 0;
    }
    strcat(path, ".pub");
    path += ".pub";

    // TODO(danalbert): ReadFileToString
    // Note that on Windows, load_file() does not do CR/LF translation, but
    // ReadFileToString() uses the C Runtime which uses CR/LF translation by
    // default (by is overridable with _setmode()).
    unsigned size;
    char* file_data = reinterpret_cast<char*>(load_file(path, &size));
    void* file_data = load_file(path.c_str(), &size);
    if (file_data == nullptr) {
        D("Can't load '%s'\n", path);
        D("Can't load '%s'\n", path.c_str());
        return 0;
    }

    if (len < (size_t)(size + 1)) {
        D("%s: Content too large ret=%d\n", path, size);
        D("%s: Content too large ret=%d\n", path.c_str(), size);
        free(file_data);
        return 0;
    }
+3 −1
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@

#include <string>

#include "base/macros.h"

// Sends the protocol "OKAY" message.
bool SendOkay(int fd);

@@ -54,6 +56,6 @@ bool WriteFdExactly(int fd, const char* s);
bool WriteFdExactly(int fd, const std::string& s);

// Same as above, but formats the string to send.
bool WriteFdFmt(int fd, const char* fmt, ...) __attribute__((__format__(__printf__, 2, 3)));
bool WriteFdFmt(int fd, const char* fmt, ...) ATTRIBUTE_FORMAT(2, 3);

#endif /* ADB_IO_H */
+5 −0
Original line number Diff line number Diff line
@@ -42,6 +42,11 @@ bool directory_exists(const std::string& path) {
  return lstat(path.c_str(), &sb) != -1 && S_ISDIR(sb.st_mode);
}

bool file_exists(const std::string& path) {
  struct stat sb;
  return lstat(path.c_str(), &sb) != -1 && S_ISREG(sb.st_mode);
}

std::string escape_arg(const std::string& s) {
  std::string result = s;

Loading