Skip to content

Commit ac633a4

Browse files
committed
fix: potential buff overflow, new version scheme, check size in CI
1 parent 1375bc6 commit ac633a4

File tree

6 files changed

+24
-9
lines changed

6 files changed

+24
-9
lines changed

.github/workflows/build.yml

+2
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@ jobs:
2828
run: ./fbt COMPACT=1 DEBUG=0 faps
2929
- name: Check FlipBIP Built
3030
run: test -f build/f7-firmware-C/.extapps/flipbip.fap
31+
- name: Check FlipBIP Size
32+
run: ls -l --block-size=K build/f7-firmware-C/.extapps/flipbip.fap

application.fam

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ App(
1010
order=10,
1111
fap_icon="flipbip_10px.png",
1212
fap_icon_assets="icons",
13+
fap_icon_assets_symbol="flipbip",
1314
fap_private_libs=[
1415
Lib(
1516
name="crypto",
1617
),
1718
],
1819
fap_category="Misc",
19-
fap_description="Crypto toolkit for Flipper",
2020
fap_author="Struan Clark (xtruan)",
2121
fap_weburl="https://github.com/xtruan/FlipBIP",
22+
fap_version=(1, 10),
23+
fap_description="Crypto toolkit for Flipper",
2224
)

flipbip.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
#include "views/flipbip_startscreen.h"
1616
#include "views/flipbip_scene_1.h"
1717

18-
#define FLIPBIP_VERSION "v1.0.0"
18+
#define FLIPBIP_VERSION "v1.10.0"
1919

2020
#define COIN_BTC 0
2121
#define COIN_DOGE 3

helpers/flipbip_file.c

+11-5
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,11 @@ const char* FILE_HSTR = "fb01";
3333
const char* FILE_K1 = "fb0131d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a"
3434
"baefe6d9ceb651842260e0d1e05e3b90d15e7d5ffaaabc0207bf200a117793a2";
3535

36-
bool flipbip_load_file(char* settings, const FlipBipFile file_type, const char* file_name) {
36+
bool flipbip_load_file(
37+
char* settings,
38+
size_t slen,
39+
const FlipBipFile file_type,
40+
const char* file_name) {
3741
bool ret = false;
3842
const char* path;
3943
if(file_type == FlipBipFileKey) {
@@ -53,10 +57,12 @@ bool flipbip_load_file(char* settings, const FlipBipFile file_type, const char*
5357
File* settings_file = storage_file_alloc(fs_api);
5458
if(storage_file_open(settings_file, path, FSAM_READ, FSOM_OPEN_EXISTING)) {
5559
char chr;
56-
int i = 0;
60+
size_t i = 0;
5761
while((storage_file_read(settings_file, &chr, 1) == 1) &&
5862
!storage_file_eof(settings_file) && !isspace(chr)) {
59-
settings[i] = chr;
63+
if(i < slen) {
64+
settings[i] = chr;
65+
}
6066
i++;
6167
}
6268
ret = true;
@@ -194,7 +200,7 @@ bool flipbip_load_file_secure(char* settings) {
194200
memzero(data, dlen);
195201

196202
// load k2 from file
197-
if(!flipbip_load_file(data, FlipBipFileKey, NULL)) return false;
203+
if(!flipbip_load_file(data, dlen, FlipBipFileKey, NULL)) return false;
198204

199205
// check header
200206
if(data[0] != FILE_HSTR[0] || data[1] != FILE_HSTR[1] || data[2] != FILE_HSTR[2] ||
@@ -220,7 +226,7 @@ bool flipbip_load_file_secure(char* settings) {
220226
data -= FILE_HLEN;
221227

222228
// load data from file
223-
if(!flipbip_load_file(data, FlipBipFileDat, NULL)) return false;
229+
if(!flipbip_load_file(data, dlen, FlipBipFileDat, NULL)) return false;
224230

225231
// check header
226232
if(data[0] != FILE_HSTR[0] || data[1] != FILE_HSTR[1] || data[2] != FILE_HSTR[2] ||

helpers/flipbip_file.h

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#include <stdbool.h>
2+
#include <stddef.h>
23

34
typedef enum {
45
FlipBipFileDat,
@@ -7,7 +8,11 @@ typedef enum {
78
} FlipBipFile;
89

910
bool flipbip_has_file(const FlipBipFile file_type, const char* file_name, const bool remove);
10-
bool flipbip_load_file(char* settings, const FlipBipFile file_type, const char* file_name);
11+
bool flipbip_load_file(
12+
char* settings,
13+
size_t slen,
14+
const FlipBipFile file_type,
15+
const char* file_name);
1116
bool flipbip_save_file(
1217
const char* settings,
1318
const FlipBipFile file_type,

views/flipbip_scene_1.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,7 @@ void flipbip_scene_1_draw(Canvas* canvas, FlipBipScene1Model* model) {
312312
canvas_draw_str(canvas, 2, 10, TEXT_LOADING);
313313
canvas_draw_str(canvas, 7, 30, s_derivation_text);
314314
canvas_draw_icon(canvas, 86, 22, &I_Keychain_39x36);
315-
if (s_warn_insecure) {
315+
if(s_warn_insecure) {
316316
canvas_set_font(canvas, FontSecondary);
317317
canvas_draw_str(canvas, 2, 50, WARN_INSECURE_TEXT_1);
318318
canvas_draw_str(canvas, 2, 60, WARN_INSECURE_TEXT_2);

0 commit comments

Comments
 (0)