> Today, the build fails while making tools:
> 
> 
> --- md2.lo ---
> /dist/src/tools/compat/../../lib/libc/hash/md2/md2.c:130:4: error: call to 
> undeclared function 'MD2Transform'; ISO C99 and later do not support implicit 
> function declarations [-Wimplicit-function-declaration]
>                        MD2Transform(context); /* resets i */
>                        ^
> /dist/src/tools/compat/../../lib/libc/hash/md2/md2.c:163:1: error: 
> conflicting types for 'MD2Transform'
> MD2Transform(MD2_CTX *context)
> ^
> /dist/src/tools/compat/../../lib/libc/hash/md2/md2.c:130:4: note: previous 
> implicit declaration is here
>                        MD2Transform(context); /* resets i */
>                        ^
> 2 errors generated.

Reverting lib/libc/hash/md2/md2.c to v1.7 fixes the build.

As I understand, MD2Transform() is used (in MD2Update()) before it is defined, 
so to fix it properly I suggest the following patch.

Commit?

Kind regards,
Adam



diff -u -r1.8 md2.c
--- md2.c 20 Jan 2024 14:52:47 -0000 1.8
+++ md2.c 25 Jan 2024 08:17:43 -0000
@@ -113,6 +113,30 @@
  memset(&context->X[0], 0, sizeof(context->X));
 }
  +/*
+ * XXX This should not be visible, but due to an accident, it is
+ * XXX so it must remain so.
+ */
+/*static*/ void
+MD2Transform(MD2_CTX *context)
+{
+ uint32_t l, j, k, t;
+
+ /* set block "3" and update "checksum" */
+ for (l = context->C[15], j = 0; j < 16; j++) {
+ context->X[32 + j] = context->X[j] ^ context->X[16 + j];
+ l = context->C[j] ^= S[context->X[16 + j] ^ l];
+ }
+
+ /* mangle input block */
+ for (t = j = 0; j < 18; t = (t + j) % 256, j++)
+ for (k = 0; k < 48; k++)
+ t = context->X[k] = (context->X[k] ^ S[t]);
+
+ /* reset input pointer */
+ context->i = 16;
+}
+
 void
 MD2Update(MD2_CTX *context, const unsigned char *input, unsigned int inputLen)
 {
@@ -155,28 +179,4 @@
  MD2Init(context);
 }
  -/*
- * XXX This should not be visible, but due to an accident, it is
- * XXX so it must remain so.
- */
-/*static*/ void
-MD2Transform(MD2_CTX *context)
-{
- uint32_t l, j, k, t;
-
- /* set block "3" and update "checksum" */
- for (l = context->C[15], j = 0; j < 16; j++) {
- context->X[32 + j] = context->X[j] ^ context->X[16 + j];
- l = context->C[j] ^= S[context->X[16 + j] ^ l];
- }
-
- /* mangle input block */
- for (t = j = 0; j < 18; t = (t + j) % 256, j++)
- for (k = 0; k < 48; k++)
- t = context->X[k] = (context->X[k] ^ S[t]);
-
- /* reset input pointer */
- context->i = 16;
-}
-
 #endif /* !HAVE_MD2_H */

Reply via email to