ssb: Size blob ID buffers appropriately.

This commit is contained in:
Cory McWilliams 2024-11-11 21:05:29 -05:00
parent db4997fdc4
commit 7a276adbbc
2 changed files with 10 additions and 8 deletions

View File

@ -1246,7 +1246,7 @@ static void _httpd_endpoint_view_work(tf_ssb_t* ssb, void* user_data)
{ {
view_t* view = user_data; view_t* view = user_data;
tf_http_request_t* request = view->request; tf_http_request_t* request = view->request;
char blob_id[128] = ""; char blob_id[k_blob_id_len] = "";
user_app_t* user_app = _parse_user_app_from_path(request->path, "/view"); user_app_t* user_app = _parse_user_app_from_path(request->path, "/view");
if (user_app) if (user_app)
@ -1339,7 +1339,7 @@ typedef struct _save_t
{ {
tf_http_request_t* request; tf_http_request_t* request;
int response; int response;
char blob_id[256]; char blob_id[k_blob_id_len];
} save_t; } save_t;
static void _httpd_endpoint_save_work(tf_ssb_t* ssb, void* user_data) static void _httpd_endpoint_save_work(tf_ssb_t* ssb, void* user_data)
@ -1416,12 +1416,12 @@ static void _httpd_endpoint_save_work(tf_ssb_t* ssb, void* user_data)
size_t new_app_length = 0; size_t new_app_length = 0;
const char* new_app_str = JS_ToCStringLen(context, &new_app_length, new_app_json); const char* new_app_str = JS_ToCStringLen(context, &new_app_length, new_app_json);
char blob_id[250] = { 0 }; char blob_id[k_blob_id_len] = { 0 };
if (tf_ssb_db_blob_store(ssb, (const uint8_t*)new_app_str, new_app_length, blob_id, sizeof(blob_id), NULL) && if (tf_ssb_db_blob_store(ssb, (const uint8_t*)new_app_str, new_app_length, blob_id, sizeof(blob_id), NULL) &&
tf_ssb_db_set_property(ssb, user_app->user, app_path, blob_id)) tf_ssb_db_set_property(ssb, user_app->user, app_path, blob_id))
{ {
tf_ssb_db_add_value_to_array_property(ssb, user_app->user, "apps", user_app->app); tf_ssb_db_add_value_to_array_property(ssb, user_app->user, "apps", user_app->app);
snprintf(save->blob_id, sizeof(save->blob_id), "/%s", blob_id); snprintf(save->blob_id, sizeof(save->blob_id), "%s", blob_id);
save->response = 200; save->response = 200;
} }
@ -1446,10 +1446,10 @@ static void _httpd_endpoint_save_work(tf_ssb_t* ssb, void* user_data)
} }
else if (strcmp(request->path, "/save") == 0) else if (strcmp(request->path, "/save") == 0)
{ {
char blob_id[250] = { 0 }; char blob_id[k_blob_id_len] = { 0 };
if (tf_ssb_db_blob_store(ssb, request->body, request->content_length, blob_id, sizeof(blob_id), NULL)) if (tf_ssb_db_blob_store(ssb, request->body, request->content_length, blob_id, sizeof(blob_id), NULL))
{ {
snprintf(save->blob_id, sizeof(save->blob_id), "/%s", blob_id); snprintf(save->blob_id, sizeof(save->blob_id), "%s", blob_id);
save->response = 200; save->response = 200;
} }
} }
@ -1473,7 +1473,9 @@ static void _httpd_endpoint_save_after_work(tf_ssb_t* ssb, int status, void* use
tf_http_request_t* request = save->request; tf_http_request_t* request = save->request;
if (*save->blob_id) if (*save->blob_id)
{ {
tf_http_respond(request, 200, NULL, 0, save->blob_id, strlen(save->blob_id)); char body[256] = "";
int length = snprintf(body, sizeof(body), "/%s", save->blob_id);
tf_http_respond(request, 200, NULL, 0, body, length);
} }
tf_http_request_unref(request); tf_http_request_unref(request);
tf_free(save); tf_free(save);

View File

@ -90,7 +90,7 @@ void tf_ssb_export(tf_ssb_t* ssb, const char* key)
return; return;
} }
char app_blob_id[64] = { 0 }; char app_blob_id[k_blob_id_len] = { 0 };
sqlite3* db = tf_ssb_acquire_db_reader(ssb); sqlite3* db = tf_ssb_acquire_db_reader(ssb);
sqlite3_busy_timeout(db, 10000); sqlite3_busy_timeout(db, 10000);
sqlite3_stmt* statement; sqlite3_stmt* statement;