Changeset 64294


Ignore:
Timestamp:
Feb 28, 2010, 9:59:12 PM (7 years ago)
Author:
jmr@…
Message:

error checking, sprintf -> snprintf, strcpy -> strncpy

Location:
trunk/base/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/base/src/darwintracelib1.0/darwintrace.c

    r50702 r64294  
    240240                int theSize = strlen(varName) + strlen(varValue) + 2;
    241241                theResult = (char*) malloc(theSize);
    242                 sprintf(theResult, "%s=%s", varName, varValue);
    243                 theResult[theSize - 1] = 0;
     242                if (theResult) {
     243                    snprintf(theResult, theSize, "%s=%s", varName, varValue);
     244                    theResult[theSize - 1] = 0;
     245                }
    244246        }
    245247       
     
    335337                        struct sockaddr_un sun;
    336338                        sun.sun_family=AF_UNIX;
    337                         strcpy(sun.sun_path, __env_darwintrace_log);
     339                        strncpy(sun.sun_path, __env_darwintrace_log, sizeof(sun.sun_path));
    338340                        if(connect(sock, (struct sockaddr*)&sun, strlen(__env_darwintrace_log)+1+sizeof(sun.sun_family))!=-1)
    339341                        {
     
    475477                return 1;
    476478       
    477         strcpy(buffer, "dep_check\t");
    478         strcpy(buffer+10, path);
     479        strncpy(buffer, "dep_check\t", sizeof(buffer));
     480        strncpy(buffer+10, path, sizeof(buffer)-10);
    479481        p=exchange_with_port(buffer, strlen(buffer)+1, 1, 0);
    480482        if(p==(char*)-1||!p)
  • trunk/base/src/pextlib1.0/tracelib.c

    r64155 r64294  
    343343        char buf[1024], tclcmd[32];
    344344       
    345         vsprintf(buf, format, va);
    346        
    347         sprintf(tclcmd, "ui_%s $warn", severity);
     345        vsnprintf(buf, sizeof(buf), format, va);
     346       
     347        snprintf(tclcmd, sizeof(tclcmd), "ui_%s $warn", severity);
    348348       
    349349        Tcl_SetVar(interp, "warn", buf, 0);
  • trunk/base/src/registry2.0/item.c

    r27967 r64294  
    151151    Tcl_Obj* result;
    152152    /* 40 + 20 per clause is safe */
    153     char* query = (char*)malloc((20*objc)*sizeof(char));
     153    int query_size = (20*objc)*sizeof(char);
     154    char* query = (char*)malloc(query_size);
     155    char* query_start = "SELECT proc FROM items";
    154156    char* insert;
     157    int insert_size = query_size - strlen(query_start);
    155158    if (db == NULL) {
    156159        return TCL_ERROR;
    157160    }
    158     strcpy(query, "SELECT proc FROM items");
    159     insert = query + strlen("SELECT proc FROM items");
     161    strncpy(query, query_start, query_size);
     162    insert = query + strlen(query_start);
    160163    for (i=2; i<objc; i++) {
    161164        int len;
     
    180183        key = Tcl_GetString(keyObj);
    181184        if (i == 2) {
    182             sprintf(insert, " WHERE %s=?", key);
     185            snprintf(insert, insert_size, " WHERE %s=?", key);
    183186            insert += 9 + strlen(key);
     187            insert_size -= 9 + strlen(key);
    184188        } else {
    185             sprintf(insert, " AND %s=?", key);
     189            snprintf(insert, insert_size, " AND %s=?", key);
    186190            insert += 7 + strlen(key);
     191            insert_size -= 7 + strlen(key);
    187192        }
    188193    }
  • trunk/base/src/registry2.0/itemobj.c

    r27967 r64294  
    111111            const char* result;
    112112            Tcl_Obj* resultObj;
    113             sprintf(query, "SELECT %s FROM items WHERE rowid=?", key);
     113            snprintf(query, sizeof(query), "SELECT %s FROM items WHERE rowid=?", key);
    114114            sqlite3_prepare(item->db, query, -1, &stmt, NULL);
    115115            sqlite3_bind_int64(stmt, 1, item->rowid);
     
    134134            char* key = Tcl_GetString(objv[2]);
    135135            char* value = Tcl_GetString(objv[3]);
    136             sprintf(query, "UPDATE items SET %s=? WHERE rowid=?", key);
     136            snprintf(query, sizeof(query), "UPDATE items SET %s=? WHERE rowid=?", key);
    137137            sqlite3_prepare(item->db, query, -1, &stmt, NULL);
    138138            sqlite3_bind_text(stmt, 1, value, -1, SQLITE_STATIC);
  • trunk/base/src/registry2.0/util.c

    r64269 r64294  
    5252 */
    5353char* unique_name(Tcl_Interp* interp, char* prefix) {
    54     char* result = malloc(strlen(prefix) + TCL_INTEGER_SPACE + 1);
     54    int result_size = strlen(prefix) + TCL_INTEGER_SPACE + 1;
     55    char* result = malloc(result_size);
    5556    Tcl_CmdInfo info;
    5657    int i;
    5758    for (i=0; ; i++) {
    58         sprintf(result, "%s%d", prefix, i);
     59        snprintf(result, result_size, "%s%d", prefix, i);
    5960        if (Tcl_GetCommandInfo(interp, result, &info) == 0) {
    6061            break;
  • trunk/base/src/tclobjc1.0/tclobjc_types.m

    r53280 r64294  
    111111        /* objPtr->bytes must be allocated with Tcl_Alloc */
    112112        objPtr->bytes = Tcl_Alloc(length);
    113         strcpy(objPtr->bytes, string);
     113        strncpy(objPtr->bytes, string, length);
    114114        free(string);
    115115}
Note: See TracChangeset for help on using the changeset viewer.