diff --git a/channels/drive/client/drive_main.c b/channels/drive/client/drive_main.c index a15829dbe..817178248 100644 --- a/channels/drive/client/drive_main.c +++ b/channels/drive/client/drive_main.c @@ -64,9 +64,9 @@ typedef struct rdpContext* rdpcontext; } DRIVE_DEVICE; -static INT32 drive_map_windows_err(DWORD fs_errno) +static NTSTATUS drive_map_windows_err(DWORD fs_errno) { - INT32 rc = 0; + NTSTATUS rc = 0; /* try to return NTSTATUS version of error code */ diff --git a/channels/rdpdr/client/irp.c b/channels/rdpdr/client/irp.c index eeba80d3e..554b087e4 100644 --- a/channels/rdpdr/client/irp.c +++ b/channels/rdpdr/client/irp.c @@ -74,7 +74,7 @@ static UINT irp_complete(IRP* irp) pos = Stream_GetPosition(irp->output); Stream_SetPosition(irp->output, RDPDR_DEVICE_IO_RESPONSE_LENGTH - 4); - Stream_Write_UINT32(irp->output, irp->IoStatus); /* IoStatus (4 bytes) */ + Stream_Write_INT32(irp->output, irp->IoStatus); /* IoStatus (4 bytes) */ Stream_SetPosition(irp->output, pos); error = rdpdr_send(rdpdr, irp->output); diff --git a/channels/rdpdr/client/rdpdr_main.c b/channels/rdpdr/client/rdpdr_main.c index 91f63516c..6b73a563a 100644 --- a/channels/rdpdr/client/rdpdr_main.c +++ b/channels/rdpdr/client/rdpdr_main.c @@ -1516,8 +1516,7 @@ static UINT dummy_irp_response(rdpdrPlugin* rdpdr, wStream* s) Stream_Read_UINT32(s, FileId); /* FileId (4 bytes) */ Stream_Read_UINT32(s, CompletionId); /* CompletionId (4 bytes) */ - if (!rdpdr_write_iocompletion_header(output, DeviceId, CompletionId, - (UINT32)STATUS_UNSUCCESSFUL)) + if (!rdpdr_write_iocompletion_header(output, DeviceId, CompletionId, STATUS_UNSUCCESSFUL)) return CHANNEL_RC_NO_MEMORY; return rdpdr_send(rdpdr, output); diff --git a/channels/rdpei/rdpei_common.c b/channels/rdpei/rdpei_common.c index 8d9c13957..5e046280d 100644 --- a/channels/rdpei/rdpei_common.c +++ b/channels/rdpei/rdpei_common.c @@ -191,11 +191,11 @@ BOOL rdpei_read_4byte_unsigned(wStream* s, UINT32* value) break; case 3: - *value = ((byte & 0x3F) << 24) & 0xFF000000; + *value = ((UINT32)(byte & 0x3F) << 24) & 0xFF000000; Stream_Read_UINT8(s, byte); - *value |= ((byte << 16) & 0xFF0000); + *value |= ((UINT32)(byte << 16) & 0xFF0000); Stream_Read_UINT8(s, byte); - *value |= ((byte << 8) & 0xFF00); + *value |= ((UINT32)(byte << 8) & 0xFF00); Stream_Read_UINT8(s, byte); *value |= byte; break; diff --git a/channels/serial/client/serial_main.c b/channels/serial/client/serial_main.c index bd2d5c6bc..ee04433bc 100644 --- a/channels/serial/client/serial_main.c +++ b/channels/serial/client/serial_main.c @@ -69,7 +69,7 @@ typedef struct } IRP_THREAD_DATA; static void close_terminated_irp_thread_handles(SERIAL_DEVICE* serial, BOOL forceClose); -static INT32 GetLastErrorToIoStatus(SERIAL_DEVICE* serial) +static NTSTATUS GetLastErrorToIoStatus(SERIAL_DEVICE* serial) { /* http://msdn.microsoft.com/en-us/library/ff547466%28v=vs.85%29.aspx#generic_status_values_for_serial_device_control_requests */ diff --git a/client/SDL/SDL2/sdl_freerdp.cpp b/client/SDL/SDL2/sdl_freerdp.cpp index 4337d607f..58fc07c9f 100644 --- a/client/SDL/SDL2/sdl_freerdp.cpp +++ b/client/SDL/SDL2/sdl_freerdp.cpp @@ -273,7 +273,7 @@ static int error_info_to_error(freerdp* instance, DWORD* pcode, char** msg, size const int exit_code = sdl_map_error_to_exit_code(code); winpr_asprintf(msg, len, "Terminate with %s due to ERROR_INFO %s [0x%08" PRIx32 "]: %s", - sdl_map_error_to_code_tag(exit_code), name, code, str); + sdl_map_error_to_code_tag(code), name, code, str); WLog_DBG(SDL_TAG, "%s", *msg); if (pcode) *pcode = code; diff --git a/client/SDL/SDL3/dialogs/sdl_buttons.cpp b/client/SDL/SDL3/dialogs/sdl_buttons.cpp index 6427bb88f..ceb0802a9 100644 --- a/client/SDL/SDL3/dialogs/sdl_buttons.cpp +++ b/client/SDL/SDL3/dialogs/sdl_buttons.cpp @@ -17,8 +17,9 @@ bool SdlButtonList::populate(SDL_Renderer* renderer, const std::vector(total_width, button_width); + size_t button_width = ids.size() * (static_cast(width) + hpadding) + hpadding; + size_t offsetX = static_cast(total_width) - + std::min(static_cast(total_width), button_width); for (size_t x = 0; x < ids.size(); x++) { const size_t curOffsetX = offsetX + x * (static_cast(width) + hpadding); diff --git a/client/SDL/SDL3/dialogs/sdl_selectlist.cpp b/client/SDL/SDL3/dialogs/sdl_selectlist.cpp index 2c513d69e..de8849b5b 100644 --- a/client/SDL/SDL3/dialogs/sdl_selectlist.cpp +++ b/client/SDL/SDL3/dialogs/sdl_selectlist.cpp @@ -12,7 +12,7 @@ SdlSelectList::SdlSelectList(const std::string& title, const std::vector(widget_width), static_cast(height), diff --git a/client/SDL/SDL3/sdl_freerdp.cpp b/client/SDL/SDL3/sdl_freerdp.cpp index 97d6cf39f..5a1bcbda7 100644 --- a/client/SDL/SDL3/sdl_freerdp.cpp +++ b/client/SDL/SDL3/sdl_freerdp.cpp @@ -250,7 +250,7 @@ static int sdl_map_error_to_exit_code(DWORD error) return SDL_EXIT_CONN_FAILED; } -static const char* sdl_map_error_to_code_tag(INT32 error) +static const char* sdl_map_error_to_code_tag(UINT32 error) { const struct sdl_exit_code_map_t* entry = sdl_map_entry_by_error(error); if (entry) @@ -274,7 +274,7 @@ static int error_info_to_error(freerdp* instance, DWORD* pcode, char** msg, size const int exit_code = sdl_map_error_to_exit_code(code); winpr_asprintf(msg, len, "Terminate with %s due to ERROR_INFO %s [0x%08" PRIx32 "]: %s", - sdl_map_error_to_code_tag(exit_code), name, code, str); + sdl_map_error_to_code_tag(code), name, code, str); WLog_DBG(SDL_TAG, "%s", *msg); if (pcode) *pcode = code; diff --git a/include/freerdp/channels/rdpdr.h b/include/freerdp/channels/rdpdr.h index d50f088d1..2e947f3f2 100644 --- a/include/freerdp/channels/rdpdr.h +++ b/include/freerdp/channels/rdpdr.h @@ -358,7 +358,7 @@ struct S_IRP UINT32 MinorFunction; wStream* input; - UINT32 IoStatus; + NTSTATUS IoStatus; wStream* output; pcIRPResponse Complete; diff --git a/include/freerdp/utils/rdpdr_utils.h b/include/freerdp/utils/rdpdr_utils.h index 6e205d548..1ef53fe02 100644 --- a/include/freerdp/utils/rdpdr_utils.h +++ b/include/freerdp/utils/rdpdr_utils.h @@ -54,7 +54,7 @@ extern "C" FREERDP_API const char* scard_get_ioctl_string(UINT32 ioControlCode, BOOL funcName); FREERDP_API BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId, - UINT32 CompletionId, UINT32 ioStatus); + UINT32 CompletionId, NTSTATUS ioStatus); FREERDP_API void rdpdr_dump_received_packet(wLog* log, DWORD lvl, wStream* out, const char* custom); diff --git a/include/freerdp/utils/smartcard_call.h b/include/freerdp/utils/smartcard_call.h index 5f6e026e8..61b41d45a 100644 --- a/include/freerdp/utils/smartcard_call.h +++ b/include/freerdp/utils/smartcard_call.h @@ -56,7 +56,7 @@ extern "C" FREERDP_API void* smartcard_call_get_context(scard_call_context* ctx, SCARDCONTEXT hContext); FREERDP_API LONG smartcard_irp_device_control_call(scard_call_context* context, wStream* out, - UINT32* pIoStatus, + NTSTATUS* pIoStatus, SMARTCARD_OPERATION* operation); #ifdef __cplusplus diff --git a/libfreerdp/codec/test/TestFreeRDPCodecInterleaved.c b/libfreerdp/codec/test/TestFreeRDPCodecInterleaved.c index 6158b96ea..77f390a8e 100644 --- a/libfreerdp/codec/test/TestFreeRDPCodecInterleaved.c +++ b/libfreerdp/codec/test/TestFreeRDPCodecInterleaved.c @@ -31,7 +31,7 @@ static BOOL run_encode_decode_single(UINT16 bpp, BITMAP_INTERLEAVED_CONTEXT* enc const UINT32 bstep = FreeRDPGetBytesPerPixel(format); const size_t step = (13ULL + w) * 4ULL; const size_t SrcSize = step * h; - const float maxDiff = 4.0f * ((bpp < 24) ? 2.0f : 1.0f); + const int maxDiff = 4 * ((bpp < 24) ? 2 : 1); UINT32 DstSize = SrcSize; BYTE* pSrcData = calloc(1, SrcSize); BYTE* pDstData = calloc(1, SrcSize); @@ -79,13 +79,13 @@ static BOOL run_encode_decode_single(UINT16 bpp, BITMAP_INTERLEAVED_CONTEXT* enc FreeRDPSplitColor(srcColor, format, &r, &g, &b, NULL, NULL); FreeRDPSplitColor(dstColor, format, &dr, &dg, &db, NULL, NULL); - if (fabsf((float)r - dr) > maxDiff) + if (abs(r - dr) > maxDiff) goto fail; - if (fabsf((float)g - dg) > maxDiff) + if (abs(g - dg) > maxDiff) goto fail; - if (fabsf((float)b - db) > maxDiff) + if (abs(b - db) > maxDiff) goto fail; } } diff --git a/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c b/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c index 43c49e7d9..68dd1d228 100644 --- a/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c +++ b/libfreerdp/codec/test/TestFreeRDPCodecProgressive.c @@ -1185,8 +1185,17 @@ static WINPR_NORETURN(void usage(const char* name)) static void print_codec_stats(const char* name, UINT64 timeNS) { - const double dectimems = timeNS / 1000000.0; - (void)fprintf(stderr, "[%s] took %lf ms to decode\n", name, dectimems); + const double dectimeMS = (double)timeNS / 1000.0 / 1000.0; + (void)fprintf(stderr, "[%s] took %lf ms to decode\n", name, dectimeMS); +} + +static UINT64 measure_diff_and_print(const char* cname, UINT32 frameId, UINT64 start) +{ + const UINT64 end = winpr_GetTickCount64NS(); + const UINT64 diff = end - start; + const double ddiff = (double)diff / 1000000.0; + (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, ddiff); + return diff; } static int test_dump(int argc, char* argv[]) @@ -1264,12 +1273,7 @@ static int test_dump(int argc, char* argv[]) success = progressive_decompress(codecs->progressive, cmd.data, cmd.length, dst, DstFormat, 0, cmd.left, cmd.top, &invalid, cmd.surfaceId, frameId); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - CAPROGRESSIVE_dectime += diff; + CAPROGRESSIVE_dectime += measure_diff_and_print(cname, frameId, start); } break; @@ -1286,12 +1290,7 @@ static int test_dump(int argc, char* argv[]) .right = (UINT16)MIN(UINT16_MAX, cmd.right), .bottom = (UINT16)MIN(UINT16_MAX, cmd.bottom) }; region16_union_rect(&invalid, &invalid, &invalidRect); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - UNCOMPRESSED_dectime += diff; + UNCOMPRESSED_dectime += measure_diff_and_print(cname, frameId, start); } break; case RDPGFX_CODECID_CAVIDEO: @@ -1301,12 +1300,7 @@ static int test_dump(int argc, char* argv[]) dst, DstFormat, stride, height, &invalid)) success = -1; - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - CAVIDEO_dectime += diff; + CAVIDEO_dectime += measure_diff_and_print(cname, frameId, start); } break; case RDPGFX_CODECID_CLEARCODEC: @@ -1322,12 +1316,7 @@ static int test_dump(int argc, char* argv[]) .bottom = (UINT16)MIN(UINT16_MAX, cmd.bottom) }; region16_union_rect(&invalid, &invalid, &invalidRect); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - CLEARCODEC_dectime += diff; + CLEARCODEC_dectime += measure_diff_and_print(cname, frameId, start); } break; case RDPGFX_CODECID_PLANAR: @@ -1346,24 +1335,14 @@ static int test_dump(int argc, char* argv[]) (UINT16)MIN(UINT16_MAX, cmd.bottom) }; region16_union_rect(&invalid, &invalid, &invalidRect); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - PLANAR_dectime += diff; + PLANAR_dectime += measure_diff_and_print(cname, frameId, start); } break; case RDPGFX_CODECID_AVC420: { const UINT64 start = winpr_GetTickCount64NS(); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - AVC420_dectime += diff; + AVC420_dectime += measure_diff_and_print(cname, frameId, start); success = -1; } break; @@ -1371,12 +1350,7 @@ static int test_dump(int argc, char* argv[]) { const UINT64 start = winpr_GetTickCount64NS(); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - ALPHA_dectime += diff; + ALPHA_dectime += measure_diff_and_print(cname, frameId, start); success = -1; } break; @@ -1384,12 +1358,7 @@ static int test_dump(int argc, char* argv[]) { const UINT64 start = winpr_GetTickCount64NS(); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - AVC444_dectime += diff; + AVC444_dectime += measure_diff_and_print(cname, frameId, start); success = -1; } break; @@ -1397,12 +1366,7 @@ static int test_dump(int argc, char* argv[]) { const UINT64 start = winpr_GetTickCount64NS(); - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame [%s] %" PRIu32 " took %lf ms\n", cname, frameId, - ddiff); - AVC444v2_dectime += diff; + AVC444v2_dectime += measure_diff_and_print(cname, frameId, start); success = -1; } break; @@ -1429,11 +1393,7 @@ static int test_dump(int argc, char* argv[]) rect->left, rect->top, NULL, 0)) success = -42; } - const UINT64 end = winpr_GetTickCount64NS(); - const UINT64 diff = end - start; - const double ddiff = diff / 1000000.0; - (void)fprintf(stderr, "frame %" PRIu32 " copy took %lf ms\n", frameId, ddiff); - copytime += diff; + copytime += measure_diff_and_print(cname, frameId, start); } region16_clear(&invalid); } diff --git a/libfreerdp/core/tcp.c b/libfreerdp/core/tcp.c index 3c3c08ab2..22042cd18 100644 --- a/libfreerdp/core/tcp.c +++ b/libfreerdp/core/tcp.c @@ -1152,7 +1152,6 @@ int freerdp_tcp_default_connect(rdpContext* context, rdpSettings* settings, cons if (sockfd < 0) { freerdp_set_last_error_if_not(context, FREERDP_ERROR_CONNECT_FAILED); - return -1; } } @@ -1163,10 +1162,19 @@ int freerdp_tcp_default_connect(rdpContext* context, rdpSettings* settings, cons #if defined(HAVE_AF_VSOCK_H) hostname = vsock; sockfd = socket(AF_VSOCK, SOCK_STREAM, 0); + if (sockfd < 0) + { + char buffer[256] = { 0 }; + WLog_WARN(TAG, "socket(AF_VSOCK, SOCK_STREAM, 0) failed with %s [%d]", + winpr_strerror(errno, buffer, sizeof(buffer))); + freerdp_set_last_error_if_not(context, FREERDP_ERROR_CONNECT_FAILED); + return -1; + } + struct sockaddr_vm addr = { 0 }; addr.svm_family = AF_VSOCK; - addr.svm_port = port; + addr.svm_port = WINPR_ASSERTING_INT_CAST(typeof(addr.svm_port), port); errno = 0; char* ptr = NULL; @@ -1178,7 +1186,7 @@ int freerdp_tcp_default_connect(rdpContext* context, rdpSettings* settings, cons winpr_strerror(errno, ebuffer, sizeof(ebuffer))); return -1; } - addr.svm_cid = val; + addr.svm_cid = WINPR_ASSERTING_INT_CAST(typeof(addr.svm_cid), val); if (addr.svm_cid == 2) { addr.svm_flags = VMADDR_FLAG_TO_HOST; diff --git a/libfreerdp/gdi/line.c b/libfreerdp/gdi/line.c index b5b7b8ba7..387b4b3f6 100644 --- a/libfreerdp/gdi/line.c +++ b/libfreerdp/gdi/line.c @@ -175,7 +175,8 @@ BOOL gdi_LineTo(HGDI_DC hdc, INT32 nXEnd, INT32 nYEnd) { if ((x >= bx1 && x <= bx2) && (y >= by1 && y <= by2)) { - BYTE* pixel = gdi_GetPointer(bmp, x, y); + BYTE* pixel = gdi_GetPointer(bmp, WINPR_ASSERTING_INT_CAST(uint32_t, x), + WINPR_ASSERTING_INT_CAST(uint32_t, y)); WINPR_ASSERT(pixel); gdi_rop_color(rop2, pixel, pen, bmp->format); } diff --git a/libfreerdp/primitives/sse/prim_colors_sse2.c b/libfreerdp/primitives/sse/prim_colors_sse2.c index fa06b7408..171f2904d 100644 --- a/libfreerdp/primitives/sse/prim_colors_sse2.c +++ b/libfreerdp/primitives/sse/prim_colors_sse2.c @@ -242,7 +242,7 @@ sse2_yCbCrToRGB_16s8u_P3AC4R_BGRX(const INT16* WINPR_RESTRICT pSrc[3], UINT32 sr const INT16* cr_buf = pSrc[2]; const UINT32 pad = roi->width % 16; const UINT32 step = sizeof(__m128i) / sizeof(INT16); - const UINT32 imax = (roi->width - pad) * sizeof(INT16) / sizeof(__m128i); + const size_t imax = (roi->width - pad) * sizeof(INT16) / sizeof(__m128i); BYTE* d_buf = pDst; const size_t dstPad = (dstStep - roi->width * 4); #ifdef DO_PREFETCH @@ -250,7 +250,7 @@ sse2_yCbCrToRGB_16s8u_P3AC4R_BGRX(const INT16* WINPR_RESTRICT pSrc[3], UINT32 sr /* Prefetch Y's, Cb's, and Cr's. */ for (UINT32 yp = 0; yp < roi->height; yp++) { - for (int i = 0; i < imax; i += (CACHE_LINE_BYTES / sizeof(__m128i))) + for (size_t i = 0; i < imax; i += (CACHE_LINE_BYTES / sizeof(__m128i))) { _mm_prefetch((char*)(&((__m128i*)y_buf)[i]), _MM_HINT_NTA); _mm_prefetch((char*)(&((__m128i*)cb_buf)[i]), _MM_HINT_NTA); @@ -269,7 +269,7 @@ sse2_yCbCrToRGB_16s8u_P3AC4R_BGRX(const INT16* WINPR_RESTRICT pSrc[3], UINT32 sr for (UINT32 yp = 0; yp < roi->height; ++yp) { - for (UINT32 i = 0; i < imax; i += 2) + for (size_t i = 0; i < imax; i += 2) { /* In order to use SSE2 signed 16-bit integer multiplication * we need to convert the floating point factors to signed int @@ -427,7 +427,7 @@ sse2_yCbCrToRGB_16s8u_P3AC4R_RGBX(const INT16* WINPR_RESTRICT pSrc[3], UINT32 sr const INT16* cr_buf = pSrc[2]; const UINT32 pad = roi->width % 16; const UINT32 step = sizeof(__m128i) / sizeof(INT16); - const UINT32 imax = (roi->width - pad) * sizeof(INT16) / sizeof(__m128i); + const size_t imax = (roi->width - pad) * sizeof(INT16) / sizeof(__m128i); BYTE* d_buf = pDst; const size_t dstPad = (dstStep - roi->width * 4); #ifdef DO_PREFETCH @@ -435,7 +435,7 @@ sse2_yCbCrToRGB_16s8u_P3AC4R_RGBX(const INT16* WINPR_RESTRICT pSrc[3], UINT32 sr /* Prefetch Y's, Cb's, and Cr's. */ for (UINT32 yp = 0; yp < roi->height; yp++) { - for (int i = 0; i < imax; i += (CACHE_LINE_BYTES / sizeof(__m128i))) + for (size_t i = 0; i < imax; i += (CACHE_LINE_BYTES / sizeof(__m128i))) { _mm_prefetch((char*)(&((__m128i*)y_buf)[i]), _MM_HINT_NTA); _mm_prefetch((char*)(&((__m128i*)cb_buf)[i]), _MM_HINT_NTA); @@ -454,7 +454,7 @@ sse2_yCbCrToRGB_16s8u_P3AC4R_RGBX(const INT16* WINPR_RESTRICT pSrc[3], UINT32 sr for (UINT32 yp = 0; yp < roi->height; ++yp) { - for (UINT32 i = 0; i < imax; i += 2) + for (size_t i = 0; i < imax; i += 2) { /* In order to use SSE2 signed 16-bit integer multiplication * we need to convert the floating point factors to signed int @@ -631,7 +631,6 @@ sse2_RGBToYCbCr_16s16s_P3P3(const INT16* WINPR_RESTRICT pSrc[3], int srcStep, __m128i* y_buf = (__m128i*)(pDst[0]); __m128i* cb_buf = (__m128i*)(pDst[1]); __m128i* cr_buf = (__m128i*)(pDst[2]); - int imax = 0; if (((ULONG_PTR)(pSrc[0]) & 0x0f) || ((ULONG_PTR)(pSrc[1]) & 0x0f) || ((ULONG_PTR)(pSrc[2]) & 0x0f) || ((ULONG_PTR)(pDst[0]) & 0x0f) || @@ -678,11 +677,11 @@ sse2_RGBToYCbCr_16s16s_P3P3(const INT16* WINPR_RESTRICT pSrc[3], int srcStep, g_buf = (__m128i*)(pSrc[1]); b_buf = (__m128i*)(pSrc[2]); #endif /* DO_PREFETCH */ - imax = roi->width * sizeof(INT16) / sizeof(__m128i); + const size_t imax = roi->width * sizeof(INT16) / sizeof(__m128i); for (UINT32 yp = 0; yp < roi->height; ++yp) { - for (int i = 0; i < imax; i++) + for (size_t i = 0; i < imax; i++) { /* In order to use SSE2 signed 16-bit integer multiplication we * need to convert the floating point factors to signed int diff --git a/libfreerdp/utils/rdpdr_utils.c b/libfreerdp/utils/rdpdr_utils.c index 3e1fc87d1..5ceb82246 100644 --- a/libfreerdp/utils/rdpdr_utils.c +++ b/libfreerdp/utils/rdpdr_utils.c @@ -252,7 +252,7 @@ const char* rdpdr_packetid_string(UINT16 packetid) } BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId, UINT32 CompletionId, - UINT32 ioStatus) + NTSTATUS ioStatus) { WINPR_ASSERT(out); Stream_SetPosition(out, 0); @@ -262,7 +262,7 @@ BOOL rdpdr_write_iocompletion_header(wStream* out, UINT32 DeviceId, UINT32 Compl Stream_Write_UINT16(out, PAKID_CORE_DEVICE_IOCOMPLETION); /* PacketId (2 bytes) */ Stream_Write_UINT32(out, DeviceId); /* DeviceId (4 bytes) */ Stream_Write_UINT32(out, CompletionId); /* CompletionId (4 bytes) */ - Stream_Write_UINT32(out, ioStatus); /* IoStatus (4 bytes) */ + Stream_Write_INT32(out, ioStatus); /* IoStatus (4 bytes) */ return TRUE; } diff --git a/libfreerdp/utils/smartcard_call.c b/libfreerdp/utils/smartcard_call.c index 4f5a2cf9a..32c6d7249 100644 --- a/libfreerdp/utils/smartcard_call.c +++ b/libfreerdp/utils/smartcard_call.c @@ -1548,7 +1548,7 @@ static LONG smartcard_LocateCardsByATRA_Call(scard_call_context* smartcard, wStr } LONG smartcard_irp_device_control_call(scard_call_context* smartcard, wStream* out, - UINT32* pIoStatus, SMARTCARD_OPERATION* operation) + NTSTATUS* pIoStatus, SMARTCARD_OPERATION* operation) { LONG result = 0; UINT32 offset = 0; diff --git a/scripts/abi-suppr.txt b/scripts/abi-suppr.txt index 7672276d5..dd7058ab3 100644 --- a/scripts/abi-suppr.txt +++ b/scripts/abi-suppr.txt @@ -10,5 +10,21 @@ has_data_members_inserted_at = end # winpr_strerror did use unsigned instead of signed int as argument [suppress_function] -change_kine = function-subtype-change +change_kind = function-subtype-change name = winpr_strerror + +# NtStatus2Tag did use unsigned instead of signed NTSTATUS as argument +[suppress_function] +change_kind = function-subtype-change +name = NtStatus2Tag + +# rdpdr_write_iocompletion_header did use unsigned instead of signed NTSTATUS as argument +[suppress_function] +change_kind = function-subtype-change +name = rdpdr_write_iocompletion_header + +# smartcard_irp_device_control_call did use unsigned instead of signed NTSTATUS as argument +[suppress_function] +change_kind = function-subtype-change +name = smartcard_irp_device_control_call + diff --git a/uwac/libuwac/uwac-input.c b/uwac/libuwac/uwac-input.c index aabca14c5..c57994633 100644 --- a/uwac/libuwac/uwac-input.c +++ b/uwac/libuwac/uwac-input.c @@ -35,6 +35,8 @@ #include #include +#include + #include "uwac-os.h" #include "wayland-cursor.h" #include "wayland-client-protocol.h" @@ -59,7 +61,7 @@ static struct wl_buffer* create_pointer_buffer(UwacSeat* seat, const void* src, } memcpy(data, src, size); - pool = wl_shm_create_pool(seat->display->shm, fd, size); + pool = wl_shm_create_pool(seat->display->shm, fd, WINPR_ASSERTING_INT_CAST(int32_t, size)); if (!pool) { diff --git a/uwac/libuwac/uwac-window.c b/uwac/libuwac/uwac-window.c index b23d0e067..83818fd93 100644 --- a/uwac/libuwac/uwac-window.c +++ b/uwac/libuwac/uwac-window.c @@ -683,7 +683,9 @@ UwacReturnCode UwacWindowSetInputRegion(UwacWindow* window, uint32_t x, uint32_t if (!window->input_region) return UWAC_ERROR_NOMEMORY; - wl_region_add(window->input_region, x, y, width, height); + wl_region_add(window->input_region, WINPR_ASSERTING_INT_CAST(int32_t, x), + WINPR_ASSERTING_INT_CAST(int32_t, y), WINPR_ASSERTING_INT_CAST(int32_t, width), + WINPR_ASSERTING_INT_CAST(int32_t, height)); wl_surface_set_input_region(window->surface, window->input_region); return UWAC_SUCCESS; } diff --git a/winpr/include/winpr/nt.h b/winpr/include/winpr/nt.h index e2c10c2ef..672d2ee85 100644 --- a/winpr/include/winpr/nt.h +++ b/winpr/include/winpr/nt.h @@ -1562,7 +1562,7 @@ extern "C" { #endif - WINPR_API const char* NtStatus2Tag(DWORD ntstatus); + WINPR_API const char* NtStatus2Tag(NTSTATUS ntstatus); WINPR_API const char* Win32ErrorCode2Tag(UINT16 code); #ifdef __cplusplus diff --git a/winpr/libwinpr/nt/ntstatus.c b/winpr/libwinpr/nt/ntstatus.c index e2f174e61..9abc42de6 100644 --- a/winpr/libwinpr/nt/ntstatus.c +++ b/winpr/libwinpr/nt/ntstatus.c @@ -4613,7 +4613,7 @@ static int ntstatus_compare(const void* pKey, const void* pValue) return *key < cur->code ? -1 : 1; } -const char* NtStatus2Tag(DWORD ntstatus) +const char* NtStatus2Tag(NTSTATUS ntstatus) { #if 1 /* Requires sorted struct */