mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-14 00:14:11 +09:00
[core,return] improve return value checks
propagate error conditions back the call chain
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user