TFTP
* Fix null terminated string in init_index * Add check if out of memory * Add debug message for file index.txt * Add MAX_VIRT_FILES
This commit is contained in:
@@ -10,6 +10,7 @@
|
|||||||
#define VIRT_IMAGE_BMP 1
|
#define VIRT_IMAGE_BMP 1
|
||||||
#define VIRT_IMAGE_GIF 2
|
#define VIRT_IMAGE_GIF 2
|
||||||
#define VIRT_TEXT_TXT 3
|
#define VIRT_TEXT_TXT 3
|
||||||
|
#define MAX_VIRT_FILES 4
|
||||||
|
|
||||||
#define IMAGE_BUFFER_SIZE 81920
|
#define IMAGE_BUFFER_SIZE 81920
|
||||||
|
|
||||||
@@ -240,7 +241,7 @@ int tftp_write(void* handle, struct pbuf* p) {
|
|||||||
void init_index(void) {
|
void init_index(void) {
|
||||||
size_t len = 0;
|
size_t len = 0;
|
||||||
// Add len of the virt files to the size
|
// Add len of the virt files to the size
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < MAX_VIRT_FILES; i++) {
|
||||||
len += strlen(virt_file[i].name) + 1;
|
len += strlen(virt_file[i].name) + 1;
|
||||||
}
|
}
|
||||||
void* mem = NULL; // Pointer for internal use by the llfs library
|
void* mem = NULL; // Pointer for internal use by the llfs library
|
||||||
@@ -249,10 +250,14 @@ void init_index(void) {
|
|||||||
len += strlen(file->name) + 1;
|
len += strlen(file->name) + 1;
|
||||||
}
|
}
|
||||||
len++; // +1 for the \0
|
len++; // +1 for the \0
|
||||||
virt_file[VIRT_INDEX_TXT].data = malloc(len);
|
virt_file[VIRT_INDEX_TXT].data = calloc(len, sizeof(char));
|
||||||
|
if (virt_file[VIRT_INDEX_TXT].data == NULL) {
|
||||||
|
LOG_FATAL(TAG, "Could not allocate memory for index.txt");
|
||||||
|
return;
|
||||||
|
}
|
||||||
virt_file[VIRT_INDEX_TXT].len = len;
|
virt_file[VIRT_INDEX_TXT].len = len;
|
||||||
|
|
||||||
for (int i = 0; i < 2; i++) {
|
for (int i = 0; i < MAX_VIRT_FILES; i++) {
|
||||||
str_cat_str(virt_file[VIRT_INDEX_TXT].data, len, virt_file[i].name);
|
str_cat_str(virt_file[VIRT_INDEX_TXT].data, len, virt_file[i].name);
|
||||||
str_cat(virt_file[VIRT_INDEX_TXT].data, len, '\n');
|
str_cat(virt_file[VIRT_INDEX_TXT].data, len, '\n');
|
||||||
}
|
}
|
||||||
@@ -275,6 +280,7 @@ void tftp_server_init(void) {
|
|||||||
LOG_INFO(TAG, "Initializing tftp server");
|
LOG_INFO(TAG, "Initializing tftp server");
|
||||||
// init the index.txt virt_file
|
// init the index.txt virt_file
|
||||||
init_index();
|
init_index();
|
||||||
|
LOG_DEBUG(TAG, "index.txt: %s", virt_file[VIRT_INDEX_TXT].data);
|
||||||
// init the virtImage.raw virt_file with 80kb of ram
|
// init the virtImage.raw virt_file with 80kb of ram
|
||||||
virt_file[VIRT_IMAGE_BMP].data = calloc(IMAGE_BUFFER_SIZE, sizeof(char));
|
virt_file[VIRT_IMAGE_BMP].data = calloc(IMAGE_BUFFER_SIZE, sizeof(char));
|
||||||
if (virt_file[VIRT_IMAGE_BMP].data == NULL) {
|
if (virt_file[VIRT_IMAGE_BMP].data == NULL) {
|
||||||
|
|||||||
Reference in New Issue
Block a user