Commit 34aeeb6d authored by Rob Swindell's avatar Rob Swindell 💬
Browse files

smb_removefile() failed if filename length was > 64 chars

And the "name not found" error text was wrong.
parent b830d5f5
Pipeline #2169 failed with stage
in 8 minutes and 20 seconds
...@@ -385,6 +385,7 @@ int smb_removefile(smb_t* smb, smbfile_t* file) ...@@ -385,6 +385,7 @@ int smb_removefile(smb_t* smb, smbfile_t* file)
{ {
int result; int result;
int removed = 0; int removed = 0;
char fname[SMB_FILEIDX_NAMELEN + 1] = "";
if(!smb->locked && smb_locksmbhdr(smb) != SMB_SUCCESS) if(!smb->locked && smb_locksmbhdr(smb) != SMB_SUCCESS)
return SMB_ERR_LOCK; return SMB_ERR_LOCK;
...@@ -411,6 +412,7 @@ int smb_removefile(smb_t* smb, smbfile_t* file) ...@@ -411,6 +412,7 @@ int smb_removefile(smb_t* smb, smbfile_t* file)
smb_close_da(smb); smb_close_da(smb);
// Now remove from index: // Now remove from index:
smb_fileidxname(file->name, fname, sizeof(fname));
if(result == SMB_SUCCESS) { if(result == SMB_SUCCESS) {
rewind(smb->sid_fp); rewind(smb->sid_fp);
fileidxrec_t* fidx = malloc(smb->status.total_files * sizeof(*fidx)); fileidxrec_t* fidx = malloc(smb->status.total_files * sizeof(*fidx));
...@@ -425,7 +427,7 @@ int smb_removefile(smb_t* smb, smbfile_t* file) ...@@ -425,7 +427,7 @@ int smb_removefile(smb_t* smb, smbfile_t* file)
} }
rewind(smb->sid_fp); rewind(smb->sid_fp);
for(uint32_t i = 0; i < smb->status.total_files; i++) { for(uint32_t i = 0; i < smb->status.total_files; i++) {
if(stricmp(fidx[i].name, file->name) == 0) { if(stricmp(fidx[i].name, fname) == 0) {
removed++; removed++;
continue; continue;
} }
...@@ -439,8 +441,8 @@ int smb_removefile(smb_t* smb, smbfile_t* file) ...@@ -439,8 +441,8 @@ int smb_removefile(smb_t* smb, smbfile_t* file)
free(fidx); free(fidx);
if(result == SMB_SUCCESS) { if(result == SMB_SUCCESS) {
if(removed < 1) { if(removed < 1) {
safe_snprintf(smb->last_error, sizeof(smb->last_error), "%s name found: %s" safe_snprintf(smb->last_error, sizeof(smb->last_error), "%s name not found: %s"
,__FUNCTION__, file->name); ,__FUNCTION__, fname);
result = SMB_ERR_NOT_FOUND; result = SMB_ERR_NOT_FOUND;
} else { } else {
fflush(smb->sid_fp); fflush(smb->sid_fp);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment