[core,return] improve return value checks

propagate error conditions back the call chain
This commit is contained in:
Armin Novak
2026-03-03 17:01:46 +01:00
parent 1a8e72074e
commit 0d99896094
4 changed files with 27 additions and 26 deletions

View File

@@ -1225,9 +1225,8 @@ int freerdp_assistance_parse_file_buffer(rdpAssistanceFile* file, const char* cb
int freerdp_assistance_parse_file(rdpAssistanceFile* file, const char* name, const char* password)
{
int status = 0;
int status = -1;
BYTE* buffer = nullptr;
FILE* fp = nullptr;
size_t readSize = 0;
union
{
@@ -1238,7 +1237,7 @@ int freerdp_assistance_parse_file(rdpAssistanceFile* file, const char* name, con
if (!update_name(file, name))
return -1;
fp = winpr_fopen(name, "r");
FILE* fp = winpr_fopen(name, "r");
if (!fp)
{
@@ -1246,24 +1245,22 @@ int freerdp_assistance_parse_file(rdpAssistanceFile* file, const char* name, con
return -1;
}
(void)_fseeki64(fp, 0, SEEK_END);
if (_fseeki64(fp, 0, SEEK_END) < 0)
goto fail;
fileSize.i64 = _ftelli64(fp);
(void)_fseeki64(fp, 0, SEEK_SET);
if (_fseeki64(fp, 0, SEEK_SET) < 0)
goto fail;
if (fileSize.i64 < 1)
{
WLog_ERR(TAG, "Failed to read ASSISTANCE file %s ", name);
(void)fclose(fp);
return -1;
goto fail;
}
buffer = (BYTE*)malloc(fileSize.s + 2);
if (!buffer)
{
(void)fclose(fp);
return -1;
}
goto fail;
readSize = fread(buffer, fileSize.s, 1, fp);
@@ -1273,19 +1270,18 @@ int freerdp_assistance_parse_file(rdpAssistanceFile* file, const char* name, con
readSize = fileSize.s;
}
(void)fclose(fp);
if (readSize < 1)
{
WLog_ERR(TAG, "Failed to read ASSISTANCE file %s ", name);
free(buffer);
buffer = nullptr;
return -1;
goto fail;
}
buffer[fileSize.s] = '\0';
buffer[fileSize.s + 1] = '\0';
status = freerdp_assistance_parse_file_buffer(file, (char*)buffer, fileSize.s, password);
fail:
(void)fclose(fp);
free(buffer);
return status;
}

View File

@@ -85,7 +85,8 @@ state_run_t multitransport_recv_request(rdpMultitransport* multi, wStream* s)
WLog_WARN(TAG,
"reserved is %" PRIu16 " instead of 0, skipping %" PRIuz "bytes of unknown data",
reserved, Stream_GetRemainingLength(s));
(void)Stream_SafeSeek(s, Stream_GetRemainingLength(s));
if (!Stream_SafeSeek(s, Stream_GetRemainingLength(s)))
return STATE_RUN_FAILED;
}
WINPR_ASSERT(multi->MtRequest);

View File

@@ -58,15 +58,16 @@ static void delete_file(char* path)
int rs = _fseeki64(fp, 0, SEEK_END);
if (rs == 0)
size = _ftelli64(fp);
(void)_fseeki64(fp, 0, SEEK_SET);
for (INT64 x = 0; x < size; x += sizeof(buffer))
if (_fseeki64(fp, 0, SEEK_SET) == 0)
{
const size_t dnmemb = (size_t)(size - x);
const size_t nmemb = MIN(sizeof(buffer), dnmemb);
const size_t count = fwrite(buffer, nmemb, 1, fp);
if (count != 1)
break;
for (INT64 x = 0; x < size; x += sizeof(buffer))
{
const size_t dnmemb = (size_t)(size - x);
const size_t nmemb = MIN(sizeof(buffer), dnmemb);
const size_t count = fwrite(buffer, nmemb, 1, fp);
if (count != 1)
break;
}
}
(void)fclose(fp);

View File

@@ -79,7 +79,10 @@ static
return FALSE;
if (pOffset)
(void)_fseeki64(fp, WINPR_ASSERTING_INT_CAST(int64_t, *pOffset), SEEK_SET);
{
if (_fseeki64(fp, WINPR_ASSERTING_INT_CAST(int64_t, *pOffset), SEEK_SET) < 0)
goto fail;
}
r = fread(&ts, 1, sizeof(ts), fp);
if (r != sizeof(ts))