diff mbox

[1/25] Remove nested functions: crypt/md5-crypt.c

Message ID CAGQ9bdzTqWTU3EQgpt_Ptbdu=osKw8yQpYuD6Rdd7mSa0W25yw@mail.gmail.com
State New
Headers show

Commit Message

Konstantin Serebryany June 3, 2014, 8:28 a.m. UTC
On Mon, Jun 2, 2014 at 10:08 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
> On Mon, Jun 02, 2014 at 08:50:51AM +0400, Konstantin Serebryany wrote:
>> Any comment on this patch?
>
> It results in a bunch of build warnings with gcc.  Please fix those.
Indeed so, needed one extra include. Fixed, please check the new patch.

Did you just see the warnings with your eyes, or do you use a special
configure switch or some such to turn them into errors?

I've run full build with and w/o my patch. The diff of sorted warnings
looks like this:


So, there are no new kinds of warnings added with the current patch.

--kcc

>
> Siddhesh
>
>>
>> On Thu, May 22, 2014 at 7:14 PM, Konstantin Serebryany
>> <konstantin.s.serebryany@gmail.com> wrote:
>> > On Thu, May 22, 2014 at 6:59 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
>> >> On Tue, May 20, 2014 at 06:23:40PM +0400, Konstantin Serebryany wrote:
>> >>> 2014-05-20  Kostya Serebryany  <konstantin.s.serebryany@gmail.com>
>> >>>
>> >>>         * crypt/md5-crypt.c (__md5_crypt_r): Remove a nested function.
>> >>>         (b64_from_24bit): New function.
>> >>>
>> >>
>> >> I have pushed this (and the formatting fix) now.
>> >
>> > Excellent, thanks!
>> > Here is the next patch with (hopefully) correct tabs:
>> >
>> > 2014-05-22  Kostya Serebryany  <konstantin.s.serebryany@gmail.com>
>> >
>> >         * crypt/crypt-private.h: Include ufc-crypt.h.
>> >         (__b64_from_24bit): Declare extern.
>> >         * crypt/crypt_util.c(__b64_from_24bit): New function.
>> >         (b64t): New static const variable.
>> >         * crypt/md5-crypt.c (b64_from_24bit): Remove function.
>> >         (b64t): Remove variable.
>> >         (__md5_crypt_r): Replace b64_from_24bit with __b64_from_24bit.
>> >         * crypt/sha256-crypt.c: Include crypt-private.h.
>> >         (b64t): Remove variable.
>> >         (__sha256_crypt_r): Remove b64_from_24bit and replace
>> >         with __b64_from_24bit.
>> >         * crypt/sha512-crypt.c: Likewise.
>> >
>> >
>> >
>> >
>> >
>> >
>> >
>> >>
>> >> Siddhesh

Comments

Siddhesh Poyarekar June 3, 2014, 11:14 a.m. UTC | #1
On Tue, Jun 03, 2014 at 12:28:35PM +0400, Konstantin Serebryany wrote:
> On Mon, Jun 2, 2014 at 10:08 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
> > On Mon, Jun 02, 2014 at 08:50:51AM +0400, Konstantin Serebryany wrote:
> >> Any comment on this patch?
> >
> > It results in a bunch of build warnings with gcc.  Please fix those.
> Indeed so, needed one extra include. Fixed, please check the new patch.
> 
> Did you just see the warnings with your eyes, or do you use a special
> configure switch or some such to turn them into errors?
> 

TBH I just happened to see it when I was pulling in your patch.  I
noticed a warning I had introduced earlier and then the warnings you
introduced :)

I have pushed your patch now.

Thanks,
Siddhesh
Konstantin Serebryany June 3, 2014, 11:56 a.m. UTC | #2
Thanks!

On Tue, Jun 3, 2014 at 3:14 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
> On Tue, Jun 03, 2014 at 12:28:35PM +0400, Konstantin Serebryany wrote:
>> On Mon, Jun 2, 2014 at 10:08 PM, Siddhesh Poyarekar <siddhesh@redhat.com> wrote:
>> > On Mon, Jun 02, 2014 at 08:50:51AM +0400, Konstantin Serebryany wrote:
>> >> Any comment on this patch?
>> >
>> > It results in a bunch of build warnings with gcc.  Please fix those.
>> Indeed so, needed one extra include. Fixed, please check the new patch.
>>
>> Did you just see the warnings with your eyes, or do you use a special
>> configure switch or some such to turn them into errors?
>>
>
> TBH I just happened to see it when I was pulling in your patch.  I
> noticed a warning I had introduced earlier and then the warnings you
> introduced :)
>
> I have pushed your patch now.
>
> Thanks,
> Siddhesh
diff mbox

Patch

diff --git a/crypt/crypt-private.h b/crypt/crypt-private.h
index fbaf9c4..ea46a7f 100644
--- a/crypt/crypt-private.h
+++ b/crypt/crypt-private.h
@@ -28,6 +28,9 @@ 
 #include <features.h>
 #include <stdbool.h>
 
+#include "ufc-crypt.h"
+#include "crypt.h"
+
 /* crypt.c */
 extern void _ufc_doit_r (ufc_long itr, struct crypt_data * __restrict __data,
 			 ufc_long *res);
@@ -57,4 +60,8 @@  extern char *__crypt_r (const char *__key, const char *__salt,
 			     struct crypt_data * __restrict __data);
 extern char *fcrypt (const char *key, const char *salt);
 
+extern void __b64_from_24bit (char **cp, int *buflen,
+			      unsigned int b2, unsigned int b1, unsigned int b0,
+			      int n);
+
 #endif  /* crypt-private.h */
diff --git a/crypt/crypt_util.c b/crypt/crypt_util.c
index 2875931..9381d67 100644
--- a/crypt/crypt_util.c
+++ b/crypt/crypt_util.c
@@ -253,6 +253,10 @@  static ufc_long eperm32tab[4][256][2];
  */
 static ufc_long efp[16][64][2];
 
+/* Table with characters for base64 transformation.  */
+static const char b64t[64] =
+"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+
 /*
  * For use by the old, non-reentrant routines
  * (crypt/encrypt/setkey)
@@ -956,3 +960,17 @@  setkey(__key)
 {
   __setkey_r(__key, &_ufc_foobar);
 }
+
+void
+__b64_from_24bit (char **cp, int *buflen,
+		  unsigned int b2, unsigned int b1, unsigned int b0,
+		  int n)
+{
+  unsigned int w = (b2 << 16) | (b1 << 8) | b0;
+  while (n-- > 0 && (*buflen) > 0)
+    {
+      *(*cp)++ = b64t[w & 0x3f];
+      --(*buflen);
+      w >>= 6;
+    }
+}
diff --git a/crypt/md5-crypt.c b/crypt/md5-crypt.c
index f6739d3..0aa4f7e 100644
--- a/crypt/md5-crypt.c
+++ b/crypt/md5-crypt.c
@@ -25,6 +25,7 @@ 
 #include <sys/param.h>
 
 #include "md5.h"
+#include "crypt-private.h"
 
 
 #ifdef USE_NSS
@@ -78,30 +79,12 @@  typedef int PRBool;
    encryption implementations.  */
 static const char md5_salt_prefix[] = "$1$";
 
-/* Table with characters for base64 transformation.  */
-static const char b64t[64] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
 
 /* Prototypes for local functions.  */
 extern char *__md5_crypt_r (const char *key, const char *salt,
 			    char *buffer, int buflen);
 extern char *__md5_crypt (const char *key, const char *salt);
 
-static void
-b64_from_24bit (char **cp, int *buflen,
-		unsigned int b2, unsigned int b1, unsigned int b0,
-		int n)
-{
-  unsigned int w = (b2 << 16) | (b1 << 8) | b0;
-  while (n-- > 0 && *buflen > 0)
-    {
-      *(*cp)++ = b64t[w & 0x3f];
-      --*buflen;
-      w >>= 6;
-    }
-}
-
 
 /* This entry point is equivalent to the `crypt' function in Unix
    libcs.  */
@@ -282,18 +265,18 @@  __md5_crypt_r (key, salt, buffer, buflen)
       --buflen;
     }
 
-  b64_from_24bit (&cp, &buflen,
-		  alt_result[0], alt_result[6], alt_result[12], 4);
-  b64_from_24bit (&cp, &buflen,
-		  alt_result[1], alt_result[7], alt_result[13], 4);
-  b64_from_24bit (&cp, &buflen,
-		  alt_result[2], alt_result[8], alt_result[14], 4);
-  b64_from_24bit (&cp, &buflen,
-		  alt_result[3], alt_result[9], alt_result[15], 4);
-  b64_from_24bit (&cp, &buflen,
-		  alt_result[4], alt_result[10], alt_result[5], 4);
-  b64_from_24bit (&cp, &buflen,
-		  0, 0, alt_result[11], 2);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[0], alt_result[6], alt_result[12], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[1], alt_result[7], alt_result[13], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[2], alt_result[8], alt_result[14], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[3], alt_result[9], alt_result[15], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[4], alt_result[10], alt_result[5], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    0, 0, alt_result[11], 2);
   if (buflen <= 0)
     {
       __set_errno (ERANGE);
diff --git a/crypt/sha256-crypt.c b/crypt/sha256-crypt.c
index cf0abd2..6f6a722 100644
--- a/crypt/sha256-crypt.c
+++ b/crypt/sha256-crypt.c
@@ -26,6 +26,7 @@ 
 #include <sys/param.h>
 
 #include "sha256.h"
+#include "crypt-private.h"
 
 
 #ifdef USE_NSS
@@ -90,10 +91,6 @@  static const char sha256_rounds_prefix[] = "rounds=";
 /* Maximum number of rounds.  */
 #define ROUNDS_MAX 999999999
 
-/* Table with characters for base64 transformation.  */
-static const char b64t[64] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
 
 /* Prototypes for local functions.  */
 extern char *__sha256_crypt_r (const char *key, const char *salt,
@@ -341,29 +338,28 @@  __sha256_crypt_r (key, salt, buffer, buflen)
       --buflen;
     }
 
-  void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
-		       int n)
-  {
-    unsigned int w = (b2 << 16) | (b1 << 8) | b0;
-    while (n-- > 0 && buflen > 0)
-      {
-	*cp++ = b64t[w & 0x3f];
-	--buflen;
-	w >>= 6;
-      }
-  }
-
-  b64_from_24bit (alt_result[0], alt_result[10], alt_result[20], 4);
-  b64_from_24bit (alt_result[21], alt_result[1], alt_result[11], 4);
-  b64_from_24bit (alt_result[12], alt_result[22], alt_result[2], 4);
-  b64_from_24bit (alt_result[3], alt_result[13], alt_result[23], 4);
-  b64_from_24bit (alt_result[24], alt_result[4], alt_result[14], 4);
-  b64_from_24bit (alt_result[15], alt_result[25], alt_result[5], 4);
-  b64_from_24bit (alt_result[6], alt_result[16], alt_result[26], 4);
-  b64_from_24bit (alt_result[27], alt_result[7], alt_result[17], 4);
-  b64_from_24bit (alt_result[18], alt_result[28], alt_result[8], 4);
-  b64_from_24bit (alt_result[9], alt_result[19], alt_result[29], 4);
-  b64_from_24bit (0, alt_result[31], alt_result[30], 3);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[0], alt_result[10], alt_result[20], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[21], alt_result[1], alt_result[11], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[12], alt_result[22], alt_result[2], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[3], alt_result[13], alt_result[23], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[24], alt_result[4], alt_result[14], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[15], alt_result[25], alt_result[5], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[6], alt_result[16], alt_result[26], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[27], alt_result[7], alt_result[17], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[18], alt_result[28], alt_result[8], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[9], alt_result[19], alt_result[29], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    0, alt_result[31], alt_result[30], 3);
   if (buflen <= 0)
     {
       __set_errno (ERANGE);
diff --git a/crypt/sha512-crypt.c b/crypt/sha512-crypt.c
index c0338a7..5e323ea 100644
--- a/crypt/sha512-crypt.c
+++ b/crypt/sha512-crypt.c
@@ -26,6 +26,7 @@ 
 #include <sys/param.h>
 
 #include "sha512.h"
+#include "crypt-private.h"
 
 
 #ifdef USE_NSS
@@ -90,10 +91,6 @@  static const char sha512_rounds_prefix[] = "rounds=";
 /* Maximum number of rounds.  */
 #define ROUNDS_MAX 999999999
 
-/* Table with characters for base64 transformation.  */
-static const char b64t[64] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-
 
 /* Prototypes for local functions.  */
 extern char *__sha512_crypt_r (const char *key, const char *salt,
@@ -340,40 +337,50 @@  __sha512_crypt_r (key, salt, buffer, buflen)
       --buflen;
     }
 
-  void b64_from_24bit (unsigned int b2, unsigned int b1, unsigned int b0,
-		       int n)
-  {
-    unsigned int w = (b2 << 16) | (b1 << 8) | b0;
-    while (n-- > 0 && buflen > 0)
-      {
-	*cp++ = b64t[w & 0x3f];
-	--buflen;
-	w >>= 6;
-      }
-  }
-
-  b64_from_24bit (alt_result[0], alt_result[21], alt_result[42], 4);
-  b64_from_24bit (alt_result[22], alt_result[43], alt_result[1], 4);
-  b64_from_24bit (alt_result[44], alt_result[2], alt_result[23], 4);
-  b64_from_24bit (alt_result[3], alt_result[24], alt_result[45], 4);
-  b64_from_24bit (alt_result[25], alt_result[46], alt_result[4], 4);
-  b64_from_24bit (alt_result[47], alt_result[5], alt_result[26], 4);
-  b64_from_24bit (alt_result[6], alt_result[27], alt_result[48], 4);
-  b64_from_24bit (alt_result[28], alt_result[49], alt_result[7], 4);
-  b64_from_24bit (alt_result[50], alt_result[8], alt_result[29], 4);
-  b64_from_24bit (alt_result[9], alt_result[30], alt_result[51], 4);
-  b64_from_24bit (alt_result[31], alt_result[52], alt_result[10], 4);
-  b64_from_24bit (alt_result[53], alt_result[11], alt_result[32], 4);
-  b64_from_24bit (alt_result[12], alt_result[33], alt_result[54], 4);
-  b64_from_24bit (alt_result[34], alt_result[55], alt_result[13], 4);
-  b64_from_24bit (alt_result[56], alt_result[14], alt_result[35], 4);
-  b64_from_24bit (alt_result[15], alt_result[36], alt_result[57], 4);
-  b64_from_24bit (alt_result[37], alt_result[58], alt_result[16], 4);
-  b64_from_24bit (alt_result[59], alt_result[17], alt_result[38], 4);
-  b64_from_24bit (alt_result[18], alt_result[39], alt_result[60], 4);
-  b64_from_24bit (alt_result[40], alt_result[61], alt_result[19], 4);
-  b64_from_24bit (alt_result[62], alt_result[20], alt_result[41], 4);
-  b64_from_24bit (0, 0, alt_result[63], 2);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[0], alt_result[21], alt_result[42], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[22], alt_result[43], alt_result[1], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[44], alt_result[2], alt_result[23], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[3], alt_result[24], alt_result[45], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[25], alt_result[46], alt_result[4], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[47], alt_result[5], alt_result[26], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[6], alt_result[27], alt_result[48], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[28], alt_result[49], alt_result[7], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[50], alt_result[8], alt_result[29], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[9], alt_result[30], alt_result[51], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[31], alt_result[52], alt_result[10], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[53], alt_result[11], alt_result[32], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[12], alt_result[33], alt_result[54], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[34], alt_result[55], alt_result[13], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[56], alt_result[14], alt_result[35], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[15], alt_result[36], alt_result[57], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[37], alt_result[58], alt_result[16], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[59], alt_result[17], alt_result[38], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[18], alt_result[39], alt_result[60], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[40], alt_result[61], alt_result[19], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    alt_result[62], alt_result[20], alt_result[41], 4);
+  __b64_from_24bit (&cp, &buflen,
+		    0, 0, alt_result[63], 2);
 
   if (buflen <= 0)
     {