|
@@ -33,7 +33,11 @@ const char* FILE_HSTR = "fb01";
|
|
|
const char* FILE_K1 = "fb0131d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a"
|
|
const char* FILE_K1 = "fb0131d5cf688221c109163908ebe51debb46227c6cc8b37641910833222772a"
|
|
|
"baefe6d9ceb651842260e0d1e05e3b90d15e7d5ffaaabc0207bf200a117793a2";
|
|
"baefe6d9ceb651842260e0d1e05e3b90d15e7d5ffaaabc0207bf200a117793a2";
|
|
|
|
|
|
|
|
-bool flipbip_load_file(char* settings, const FlipBipFile file_type, const char* file_name) {
|
|
|
|
|
|
|
+bool flipbip_load_file(
|
|
|
|
|
+ char* settings,
|
|
|
|
|
+ size_t slen,
|
|
|
|
|
+ const FlipBipFile file_type,
|
|
|
|
|
+ const char* file_name) {
|
|
|
bool ret = false;
|
|
bool ret = false;
|
|
|
const char* path;
|
|
const char* path;
|
|
|
if(file_type == FlipBipFileKey) {
|
|
if(file_type == FlipBipFileKey) {
|
|
@@ -53,10 +57,12 @@ bool flipbip_load_file(char* settings, const FlipBipFile file_type, const char*
|
|
|
File* settings_file = storage_file_alloc(fs_api);
|
|
File* settings_file = storage_file_alloc(fs_api);
|
|
|
if(storage_file_open(settings_file, path, FSAM_READ, FSOM_OPEN_EXISTING)) {
|
|
if(storage_file_open(settings_file, path, FSAM_READ, FSOM_OPEN_EXISTING)) {
|
|
|
char chr;
|
|
char chr;
|
|
|
- int i = 0;
|
|
|
|
|
|
|
+ size_t i = 0;
|
|
|
while((storage_file_read(settings_file, &chr, 1) == 1) &&
|
|
while((storage_file_read(settings_file, &chr, 1) == 1) &&
|
|
|
!storage_file_eof(settings_file) && !isspace(chr)) {
|
|
!storage_file_eof(settings_file) && !isspace(chr)) {
|
|
|
- settings[i] = chr;
|
|
|
|
|
|
|
+ if(i < slen) {
|
|
|
|
|
+ settings[i] = chr;
|
|
|
|
|
+ }
|
|
|
i++;
|
|
i++;
|
|
|
}
|
|
}
|
|
|
ret = true;
|
|
ret = true;
|
|
@@ -194,7 +200,7 @@ bool flipbip_load_file_secure(char* settings) {
|
|
|
memzero(data, dlen);
|
|
memzero(data, dlen);
|
|
|
|
|
|
|
|
// load k2 from file
|
|
// load k2 from file
|
|
|
- if(!flipbip_load_file(data, FlipBipFileKey, NULL)) return false;
|
|
|
|
|
|
|
+ if(!flipbip_load_file(data, dlen, FlipBipFileKey, NULL)) return false;
|
|
|
|
|
|
|
|
// check header
|
|
// check header
|
|
|
if(data[0] != FILE_HSTR[0] || data[1] != FILE_HSTR[1] || data[2] != FILE_HSTR[2] ||
|
|
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) {
|
|
|
data -= FILE_HLEN;
|
|
data -= FILE_HLEN;
|
|
|
|
|
|
|
|
// load data from file
|
|
// load data from file
|
|
|
- if(!flipbip_load_file(data, FlipBipFileDat, NULL)) return false;
|
|
|
|
|
|
|
+ if(!flipbip_load_file(data, dlen, FlipBipFileDat, NULL)) return false;
|
|
|
|
|
|
|
|
// check header
|
|
// check header
|
|
|
if(data[0] != FILE_HSTR[0] || data[1] != FILE_HSTR[1] || data[2] != FILE_HSTR[2] ||
|
|
if(data[0] != FILE_HSTR[0] || data[1] != FILE_HSTR[1] || data[2] != FILE_HSTR[2] ||
|