#define APP_OPTS_TABLE "appopts"
#define QUERY_CREATE_APPNAMES "CREATE TABLE IF NOT EXISTS "APP_NAMES_TABLE" (appkey INTEGER PRIMARY KEY AUTOINCREMENT, appname TEXT NOT NULL UNIQUE);"
#define QUERY_CREATE_APPOPTS "CREATE TABLE IF NOT EXISTS "APP_OPTS_TABLE" (appkey INTEGER PRIMARY KEY, last_used INT NOT NULL, cur_opt INT NOT NULL, to_be_opt INT NOT NULL, FOREIGN KEY(appkey) REFERENCES "APP_NAMES_TABLE"(appkey));"
-#define QUERY_INSERT_APPNAME "INSERT OR IGNORE INTO "APP_NAMES_TABLE"(appname) VALUES ('%s');"
+#define QUERY_INSERT_APPNAME "INSERT OR IGNORE INTO "APP_NAMES_TABLE"(appname) VALUES ('%q');"
#define QUERY_INSERT_APPOPTS "REPLACE INTO "APP_OPTS_TABLE" VALUES ('%d','%d','%d','%d');"
#define QUERY_DELETE_ENTRY "DELETE FROM %s WHERE appkey = %d;"
#define QUERY_SELECT_APPOPTS "SELECT appname,last_used,cur_opt,to_be_opt FROM "APP_NAMES_TABLE","APP_OPTS_TABLE" WHERE "APP_NAMES_TABLE".appkey = "APP_OPTS_TABLE".appkey;"
-#define QUERY_SELECT_APPNAME "SELECT * FROM "APP_NAMES_TABLE " WHERE appname = '%s';"
+#define QUERY_SELECT_APPNAME "SELECT * FROM "APP_NAMES_TABLE " WHERE appname = '%q';"
#define APPOPT_DATA_MAX 1024
#define SQLITE_BUSY_TIMEOUT 50000
char buf[APPOPT_DATA_MAX] = {0, };
int ret;
- snprintf(buf, APPOPT_DATA_MAX, QUERY_SELECT_APPNAME, appname);
+ sqlite3_snprintf(APPOPT_DATA_MAX, buf, QUERY_SELECT_APPNAME, appname);
ret = sqlite3_prepare_v2(db, buf, -1, &stmt, NULL);
if (ret != SQLITE_OK) {
/* Make sure appname is present in the appnames dictionary */
- snprintf(buf, APPOPT_DATA_MAX, QUERY_INSERT_APPNAME, data->appname);
+ sqlite3_snprintf(APPOPT_DATA_MAX, buf, QUERY_INSERT_APPNAME, data->appname);
if (sqlite3_exec(db, buf, NULL, NULL, &sqlite3_error_msg) != SQLITE_OK) {
_E("sqlite3_exec(\"%s\") failed! -> %s", buf, sqlite3_error_msg);
void resourced_proc_dump(int mode, const char *dirpath)
{
char buf[MAX_PATH_LENGTH];
+ char filename[MAX_NAME_LENGTH];
+ int name_len;
_cleanup_fclose_ FILE *f = NULL;
if (dirpath) {
if (localtime_r(&now, &cur_tm) == NULL)
_E("Fail to get localtime");
- snprintf(buf, sizeof(buf), "%s/%s_%.4d%.2d%.2d%.2d%.2d%.2d.log",
- dirpath, LOG_PREFIX, (1900 + cur_tm.tm_year), 1 + cur_tm.tm_mon,
- cur_tm.tm_mday, cur_tm.tm_hour, cur_tm.tm_min,
- cur_tm.tm_sec);
+ name_len = snprintf(filename, MAX_NAME_LENGTH,
+ "/%s_%.4d%.2d%.2d%.2d%.2d%.2d.log",
+ LOG_PREFIX, (1900 + cur_tm.tm_year), 1 + cur_tm.tm_mon,
+ cur_tm.tm_mday, cur_tm.tm_hour, cur_tm.tm_min, cur_tm.tm_sec);
+
+ if (strlen(dirpath) + name_len + 1 > MAX_PATH_LENGTH) {
+ _E("Dump path %s is too long");
+ return;
+ }
+
+ snprintf(buf, MAX_PATH_LENGTH, "%s%s", dirpath, filename);
f = fopen(buf, "w+");
}
proc_dump_process_list(f);