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

Commit 5a3ac105 authored by George Burgess IV's avatar George Burgess IV Committed by Gerrit Code Review
Browse files

Merge "Cleanup uses of sprintf so we can deprecate it."

parents 709bf582 a346f545
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -69,7 +69,7 @@ String8 Asset::getAssetAllocations()
            res.append(cur->getAssetSource());
            off64_t size = (cur->getLength()+512)/1024;
            char buf[64];
            sprintf(buf, ": %dK\n", (int)size);
            snprintf(buf, sizeof(buf), ": %dK\n", (int)size);
            res.append(buf);
        }
        cur = cur->mNext;
+20 −14
Original line number Diff line number Diff line
@@ -442,7 +442,7 @@ back_up_files(int oldSnapshotFD, BackupDataWriter* dataStream, int newSnapshotFD
    return 0;
}

static void calc_tar_checksum(char* buf) {
static void calc_tar_checksum(char* buf, size_t buf_size) {
    // [ 148 :   8 ] checksum -- to be calculated with this field as space chars
    memset(buf + 148, ' ', 8);

@@ -453,11 +453,13 @@ static void calc_tar_checksum(char* buf) {

    // Now write the real checksum value:
    // [ 148 :   8 ]  checksum: 6 octal digits [leading zeroes], NUL, SPC
    sprintf(buf + 148, "%06o", sum); // the trailing space is already in place
    snprintf(buf + 148, buf_size - 148, "%06o", sum); // the trailing space is
                                                      // already in place
}

// Returns number of bytes written
static int write_pax_header_entry(char* buf, const char* key, const char* value) {
static int write_pax_header_entry(char* buf, size_t buf_size,
                                  const char* key, const char* value) {
    // start with the size of "1 key=value\n"
    int len = strlen(key) + strlen(value) + 4;
    if (len > 9) len++;
@@ -466,7 +468,7 @@ static int write_pax_header_entry(char* buf, const char* key, const char* value)
    // since PATH_MAX is 4096 we don't expect to have to generate any single
    // header entry longer than 9999 characters

    return sprintf(buf, "%d %s=%s\n", len, key, value);
    return snprintf(buf, buf_size, "%d %s=%s\n", len, key, value);
}

// Wire format to the backup manager service is chunked:  each chunk is prefixed by
@@ -550,8 +552,12 @@ int write_tarfile(const String8& packageName, const String8& domain,
    // read/write up to this much at a time.
    const size_t BUFSIZE = 32 * 1024;
    char* buf = (char *)calloc(1,BUFSIZE);
    char* paxHeader = buf + 512;    // use a different chunk of it as separate scratch
    char* paxData = buf + 1024;
    const size_t PAXHEADER_OFFSET = 512;
    const size_t PAXHEADER_SIZE = 512;
    const size_t PAXDATA_SIZE = BUFSIZE - (PAXHEADER_SIZE + PAXHEADER_OFFSET);
    char* const paxHeader = buf + PAXHEADER_OFFSET; // use a different chunk of
                                                    // it as separate scratch
    char* const paxData = paxHeader + PAXHEADER_SIZE;

    if (buf == NULL) {
        ALOGE("Out of mem allocating transfer buffer");
@@ -630,21 +636,21 @@ int write_tarfile(const String8& packageName, const String8& domain,
    // already preflighted
    if (needExtended) {
        char sizeStr[32];   // big enough for a 64-bit unsigned value in decimal
        char* p = paxData;

        // construct the pax extended header data block
        memset(paxData, 0, BUFSIZE - (paxData - buf));
        memset(paxData, 0, PAXDATA_SIZE);

        // size header -- calc len in digits by actually rendering the number
        // to a string - brute force but simple
        int paxLen = 0;
        snprintf(sizeStr, sizeof(sizeStr), "%lld", (long long)s.st_size);
        p += write_pax_header_entry(p, "size", sizeStr);
        paxLen += write_pax_header_entry(paxData, PAXDATA_SIZE, "size", sizeStr);

        // fullname was generated above with the ustar paths
        p += write_pax_header_entry(p, "path", fullname.string());
        paxLen += write_pax_header_entry(paxData + paxLen, PAXDATA_SIZE - paxLen,
                "path", fullname.string());

        // Now we know how big the pax data is
        int paxLen = p - paxData;

        // Now build the pax *header* templated on the ustar header
        memcpy(paxHeader, buf, 512);
@@ -659,10 +665,10 @@ int write_tarfile(const String8& packageName, const String8& domain,

        // [ 124 :  12 ] size of pax extended header data
        memset(paxHeader + 124, 0, 12);
        snprintf(paxHeader + 124, 12, "%011o", (unsigned int)(p - paxData));
        snprintf(paxHeader + 124, 12, "%011o", (unsigned int)paxLen);

        // Checksum and write the pax block header
        calc_tar_checksum(paxHeader);
        calc_tar_checksum(paxHeader, PAXHEADER_SIZE);
        send_tarfile_chunk(writer, paxHeader, 512);

        // Now write the pax data itself
@@ -671,7 +677,7 @@ int write_tarfile(const String8& packageName, const String8& domain,
    }

    // Checksum and write the 512-byte ustar file header block to the output
    calc_tar_checksum(buf);
    calc_tar_checksum(buf, BUFSIZE);
    send_tarfile_chunk(writer, buf, 512);

    // Now write the file data itself, for real files.  We honor tar's convention that
+1 −1
Original line number Diff line number Diff line
@@ -158,7 +158,7 @@ static int set_addresses(const char *name, const char *addresses)
            }

            if (count) {
                sprintf(ifr4.ifr_name, "%s:%d", name, count);
                snprintf(ifr4.ifr_name, sizeof(ifr4.ifr_name), "%s:%d", name, count);
            }
            if (ioctl(inet4, SIOCSIFADDR, &ifr4)) {
                count = (errno == EINVAL) ? BAD_ARGUMENT : SYSTEM_ERROR;