On 17. 1. 26 18:11, [email protected] wrote:
Author: rinrab
Date: Sat Jan 17 17:11:02 2026
New Revision: 1931389

Log:
Handle SHA1 checksum update with APR backend (whose update consumes size as
`unsigned int`, not a size_t) if a buffer with a size more than the limit of
unsigned integer by iterating trough data via blocks and invoking the backend
multiple times.
[...]
  /*** SHA1 checksum ***/
+static void
+sha1_update(apr_sha1_ctx_t *ctx,
+            const void *data,
+            apr_size_t len)
+{
+  while (len > 0)
+    {
+      unsigned int block;
+
+      if (len < UINT_MAX)
+        block = len;

.../subversion/libsvn_subr/checksum_apr.c:98:17: warning: implicit conversion 
loses integer precision: 'apr_size_t' (aka 'unsigned long') to 'unsigned int' 
[-Wshorten-64-to-32]
   98 |         block = len;
      |               ~ ^~~


This is one of those rare cases where it's perfectly fine and expected to use a typecast; it's guaranteed to be safe, since you just compared 'len' with UINT_MAX.


-- Brane

Reply via email to