[client,common] check _fseeki64 return

propagate error conditions back the call chain
This commit is contained in:
Armin Novak
2026-03-03 17:02:23 +01:00
parent 0d99896094
commit 782c3d3069

View File

@@ -1021,24 +1021,22 @@ BOOL freerdp_client_parse_rdp_file_ex(rdpFile* file, const char* name, rdp_file_
return FALSE; return FALSE;
} }
(void)_fseeki64(fp, 0, SEEK_END); if (_fseeki64(fp, 0, SEEK_END) < 0)
goto fail;
file_size = _ftelli64(fp); file_size = _ftelli64(fp);
(void)_fseeki64(fp, 0, SEEK_SET); if (_fseeki64(fp, 0, SEEK_SET) < 0)
goto fail;
if (file_size < 1) if (file_size < 1)
{ {
WLog_ERR(TAG, "RDP file %s is empty", name); WLog_ERR(TAG, "RDP file %s is empty", name);
(void)fclose(fp); goto fail;
return FALSE;
} }
buffer = (BYTE*)malloc((size_t)file_size + 2); buffer = (BYTE*)malloc((size_t)file_size + 2);
if (!buffer) if (!buffer)
{ goto fail;
(void)fclose(fp);
return FALSE;
}
read_size = fread(buffer, (size_t)file_size, 1, fp); read_size = fread(buffer, (size_t)file_size, 1, fp);
@@ -1048,18 +1046,18 @@ BOOL freerdp_client_parse_rdp_file_ex(rdpFile* file, const char* name, rdp_file_
read_size = (size_t)file_size; read_size = (size_t)file_size;
} }
(void)fclose(fp);
if (read_size < 1) if (read_size < 1)
{ {
WLog_ERR(TAG, "Could not read from RDP file %s", name); WLog_ERR(TAG, "Could not read from RDP file %s", name);
free(buffer); goto fail;
return FALSE;
} }
buffer[file_size] = '\0'; buffer[file_size] = '\0';
buffer[file_size + 1] = '\0'; buffer[file_size + 1] = '\0';
status = freerdp_client_parse_rdp_file_buffer_ex(file, buffer, (size_t)file_size, parse); status = freerdp_client_parse_rdp_file_buffer_ex(file, buffer, (size_t)file_size, parse);
fail:
(void)fclose(fp);
free(buffer); free(buffer);
return status; return status;
} }