Skip to content

Commit 3cef51e

Browse files
committed
JsonConfig: refactor string buffer JSON handling for robustness
1 parent 6d86813 commit 3cef51e

21 files changed

Lines changed: 90 additions & 64 deletions

File tree

src/common/jsonconfig.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ bool ffJsonConfigParseModuleArgs(const char* key, yyjson_val* val, FFModuleArgs*
1616
{
1717
if(ffStrEqualsIgnCase(key, "key"))
1818
{
19-
ffStrbufSetNS(&moduleArgs->key, (uint32_t) yyjson_get_len(val), yyjson_get_str(val));
19+
ffStrbufSetJsonVal(&moduleArgs->key, val);
2020
return true;
2121
}
2222
else if(ffStrEqualsIgnCase(key, "format"))
2323
{
24-
ffStrbufSetNS(&moduleArgs->outputFormat, (uint32_t) yyjson_get_len(val), yyjson_get_str(val));
24+
ffStrbufSetJsonVal(&moduleArgs->outputFormat, val);
2525
return true;
2626
}
2727
else if(ffStrEqualsIgnCase(key, "outputColor"))
@@ -41,7 +41,7 @@ bool ffJsonConfigParseModuleArgs(const char* key, yyjson_val* val, FFModuleArgs*
4141
}
4242
else if(ffStrEqualsIgnCase(key, "keyIcon"))
4343
{
44-
ffStrbufSetS(&moduleArgs->keyIcon, yyjson_get_str(val));
44+
ffStrbufSetJsonVal(&moduleArgs->keyIcon, val);
4545
return true;
4646
}
4747
return false;

src/detection/camera/camera_android.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const char* ffDetectCamera(FF_MAYBE_UNUSED FFlist* result)
4545
ffStrbufInitStatic(&camera->name, "Unknown");
4646
}
4747
ffStrbufInit(&camera->vendor);
48-
ffStrbufInitS(&camera->id, yyjson_get_str(yyjson_obj_get(device, "id")));
48+
ffStrbufInitJsonVal(&camera->id, yyjson_obj_get(device, "id"));
4949
yyjson_val* sizes = yyjson_arr_get_first(yyjson_obj_get(device, "jpeg_output_sizes"));
5050
if (yyjson_is_obj(sizes))
5151
{

src/detection/packages/packages_windows.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ static void detectScoop(FFPackagesResult* result)
5959
{
6060
ffStrbufClear(&scoopPath);
6161
if (root)
62-
ffStrbufSetS(&scoopPath, yyjson_get_str(yyjson_obj_get(root, "root_path")));
62+
ffStrbufSetJsonVal(&scoopPath, yyjson_obj_get(root, "root_path"));
6363
if (scoopPath.length == 0)
6464
{
6565
ffStrbufSet(&scoopPath, &instance.state.platform.homeDir);
@@ -72,7 +72,7 @@ static void detectScoop(FFPackagesResult* result)
7272
{
7373
ffStrbufClear(&scoopPath);
7474
if (root)
75-
ffStrbufSetS(&scoopPath, yyjson_get_str(yyjson_obj_get(root, "global_path")));
75+
ffStrbufSetJsonVal(&scoopPath, yyjson_obj_get(root, "global_path"));
7676
if (scoopPath.length == 0)
7777
{
7878
ffStrbufSetS(&scoopPath, getenv("ProgramData"));

src/detection/publicip/publicip.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ const char* ffDetectPublicIp(FFPublicIpOptions* options, FFPublicIpResult* resul
8484
if (doc)
8585
{
8686
yyjson_val* root = yyjson_doc_get_root(doc);
87-
ffStrbufAppendS(&result->ip, yyjson_get_str(yyjson_obj_get(root, "ip")));
87+
ffStrbufAppendJsonVal(&result->ip, yyjson_obj_get(root, "ip"));
8888
ffStrbufDestroy(&result->location);
8989
ffStrbufInitF(&result->location, "%s, %s", yyjson_get_str(yyjson_obj_get(root, "city")), yyjson_get_str(yyjson_obj_get(root, "country")));
9090
return NULL;

src/detection/terminalfont/terminalfont_windows.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,14 @@ static const char* detectWTProfile(yyjson_val* profile, FFstrbuf* name, double*
2323

2424
if (name->length == 0)
2525
{
26-
yyjson_val* pface = yyjson_obj_get(font, "face");
27-
if(yyjson_is_str(pface))
28-
ffStrbufAppendS(name, unsafe_yyjson_get_str(pface));
26+
ffStrbufAppendJsonVal(name, yyjson_obj_get(font, "face"));
2927
}
3028

3129
if (*size < 0)
3230
{
3331
yyjson_val* psize = yyjson_obj_get(font, "size");
3432
if (yyjson_is_num(psize))
35-
*size = yyjson_get_num(psize);
33+
*size = unsafe_yyjson_get_num(psize);
3634
}
3735
return NULL;
3836
}

src/detection/wifi/wifi_android.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ const char* ffDetectWifi(FFlist* result)
4646
item->conn.channel = 0;
4747
item->conn.frequency = 0;
4848

49-
ffStrbufAppendS(&item->inf.status, yyjson_get_str(yyjson_obj_get(root, "supplicant_state")));
49+
ffStrbufAppendJsonVal(&item->inf.status, yyjson_obj_get(root, "supplicant_state"));
5050
if(!item->inf.status.length)
5151
{
5252
ffStrbufAppendS(&item->inf.status, "Unknown");
@@ -59,9 +59,9 @@ const char* ffDetectWifi(FFlist* result)
5959
double rssi = yyjson_get_num(yyjson_obj_get(root, "rssi"));
6060
item->conn.signalQuality = rssi >= -50 ? 100 : rssi <= -100 ? 0 : (rssi + 100) * 2;
6161

62-
ffStrbufAppendS(&item->inf.description, yyjson_get_str(yyjson_obj_get(root, "ip")));
63-
ffStrbufAppendS(&item->conn.bssid, yyjson_get_str(yyjson_obj_get(root, "bssid")));
64-
ffStrbufAppendS(&item->conn.ssid, yyjson_get_str(yyjson_obj_get(root, "ssid")));
62+
ffStrbufAppendJsonVal(&item->inf.description, yyjson_obj_get(root, "ip"));
63+
ffStrbufAppendJsonVal(&item->conn.bssid, yyjson_obj_get(root, "bssid"));
64+
ffStrbufAppendJsonVal(&item->conn.ssid, yyjson_obj_get(root, "ssid"));
6565
item->conn.frequency = (uint16_t) yyjson_get_int(yyjson_obj_get(root, "frequency_mhz"));
6666
item->conn.txRate = yyjson_get_num(yyjson_obj_get(root, "link_speed_mbps"));
6767
item->conn.channel = ffWifiFreqToChannel(item->conn.frequency);

src/modules/command/command.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,19 +86,19 @@ void ffParseCommandJsonObject(FFCommandOptions* options, yyjson_val* module)
8686

8787
if (ffStrEqualsIgnCase(key, "shell"))
8888
{
89-
ffStrbufSetS(&options->shell, yyjson_get_str(val));
89+
ffStrbufSetJsonVal(&options->shell, val);
9090
continue;
9191
}
9292

9393
if (ffStrEqualsIgnCase(key, "param"))
9494
{
95-
ffStrbufSetS(&options->param, yyjson_get_str(val));
95+
ffStrbufSetJsonVal(&options->param, val);
9696
continue;
9797
}
9898

9999
if (ffStrEqualsIgnCase(key, "text"))
100100
{
101-
ffStrbufSetS(&options->text, yyjson_get_str(val));
101+
ffStrbufSetJsonVal(&options->text, val);
102102
continue;
103103
}
104104

src/modules/disk/disk.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,19 +312,19 @@ void ffParseDiskJsonObject(FFDiskOptions* options, yyjson_val* module)
312312

313313
if (ffStrEqualsIgnCase(key, "folders"))
314314
{
315-
ffStrbufSetS(&options->folders, yyjson_get_str(val));
315+
ffStrbufSetJsonVal(&options->folders, val);
316316
continue;
317317
}
318318

319319
if (ffStrEqualsIgnCase(key, "hideFolders"))
320320
{
321-
ffStrbufSetS(&options->hideFolders, yyjson_get_str(val));
321+
ffStrbufSetJsonVal(&options->hideFolders, val);
322322
continue;
323323
}
324324

325325
if (ffStrEqualsIgnCase(key, "hideFS"))
326326
{
327-
ffStrbufSetS(&options->hideFS, yyjson_get_str(val));
327+
ffStrbufSetJsonVal(&options->hideFS, val);
328328
continue;
329329
}
330330

src/modules/diskio/diskio.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void ffParseDiskIOJsonObject(FFDiskIOOptions* options, yyjson_val* module)
138138

139139
if (ffStrEqualsIgnCase(key, "namePrefix"))
140140
{
141-
ffStrbufSetS(&options->namePrefix, yyjson_get_str(val));
141+
ffStrbufSetJsonVal(&options->namePrefix, val);
142142
continue;
143143
}
144144

src/modules/localip/localip.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,7 @@ void ffParseLocalIpJsonObject(FFLocalIpOptions* options, yyjson_val* module)
407407

408408
if (ffStrEqualsIgnCase(key, "namePrefix"))
409409
{
410-
ffStrbufSetS(&options->namePrefix, yyjson_get_str(val));
410+
ffStrbufSetJsonVal(&options->namePrefix, val);
411411
continue;
412412
}
413413

0 commit comments

Comments
 (0)