[sr-dev] git:master: pv: changes to SHA string transformations

Carsten Bock carsten at ng-voice.com
Wed Mar 19 11:35:53 CET 2014


Hi Lucian,

with your commit i get the following errors, when running latest trunk:

loading modules under
/usr/lib64/kamailio/modules_k/:/usr/lib64/kamailio/modules/:/usr/lib/kamailio/modules_k/:/usr/lib/kamailio/modules/
 0(874033) ERROR: <core> [sr_module.c:599]: load_module(): ERROR:
load_module: could not open module
</usr/lib64/kamailio/modules/pv.so>:
/usr/lib64/kamailio/libkcore.so.1: undefined symbol: SHA384_Init
 0(874033) : <core> [cfg.y:3408]: yyerror_at(): parse error in config
file /etc/kamailio/kamailio.cfg, line 162, column 12-15: failed to
load module
[...]

I am running a nightly build on Debian Master to build standard debian packages.

As soon as i revert your change in my local build, everythings fine again.

The kcore library has no longer any reference to the SHA384
functions... can you please check?

Thanks,
Carsten



2014-03-18 16:28 GMT+01:00 Lucian Balaceanu <lucian.balaceanu at 1and1.ro>:
> Module: sip-router
> Branch: master
> Commit: ff91a65db150210a0c55ce57df9f476a9e0ee25e
> URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=ff91a65db150210a0c55ce57df9f476a9e0ee25e
>
> Author: lucian balanceanu <lucian.balanceanu at 1and1.ro>
> Committer: lucian balanceanu <lucian.balanceanu at 1and1.ro>
> Date:   Tue Mar 18 17:20:36 2014 +0200
>
> pv: changes to SHA string transformations
>
> - addressed memset faulty usage, changed location of sha256 files,
>   removed sha2utils.h as we can use defines in sha256.h, removed
>   redundant code
>
> ---
>
>  lib/kcore/strcommon.c            |   12 +++---------
>  lib/kcore/strcommon.h            |    2 +-
>  sha256.c => lib/srutils/sha256.c |   14 +++++++-------
>  sha256.h => lib/srutils/sha256.h |    0
>  modules/pv/pv_trans.c            |   13 ++++++-------
>  sha2utils.h                      |   17 -----------------
>  6 files changed, 17 insertions(+), 41 deletions(-)
>
> diff --git a/lib/kcore/strcommon.c b/lib/kcore/strcommon.c
> index 9401457..8e57e93 100644
> --- a/lib/kcore/strcommon.c
> +++ b/lib/kcore/strcommon.c
> @@ -125,33 +125,27 @@ void compute_md5(char *dst, char *src, int src_len)
>  void compute_sha256(char *dst, u_int8_t *src, int src_len)
>  {
>         SHA256_CTX ctx256;
> -       char buf[64];
>         SHA256_Init(&ctx256);
>         SHA256_Update(&ctx256, src, src_len);
> -       SHA256_End(&ctx256, buf);
> -       strncpy(dst, buf, 64);
> +       SHA256_End(&ctx256, dst);
>  }
>
>  /*! \brief Compute SHA384 checksum */
>  void compute_sha384(char *dst, u_int8_t *src, int src_len)
>  {
>         SHA384_CTX ctx384;
> -       char buf[96];
>         SHA384_Init(&ctx384);
>         SHA384_Update(&ctx384, src, src_len);
> -       SHA384_End(&ctx384, buf);
> -       strncpy(dst, buf, 96);
> +       SHA384_End(&ctx384, dst);
>  }
>
>  /*! \brief Compute SHA512 checksum */
>  void compute_sha512(char *dst, u_int8_t *src, int src_len)
>  {
>         SHA512_CTX ctx512;
> -       char buf[128];
>         SHA512_Init(&ctx512);
>         SHA512_Update(&ctx512, src, src_len);
> -       SHA512_End(&ctx512, buf);
> -       strncpy(dst, buf, 128);
> +       SHA512_End(&ctx512, dst);
>  }
>
>  /*! \brief Unscape all printable ASCII characters */
> diff --git a/lib/kcore/strcommon.h b/lib/kcore/strcommon.h
> index 5864ef0..9e81455 100644
> --- a/lib/kcore/strcommon.h
> +++ b/lib/kcore/strcommon.h
> @@ -30,7 +30,7 @@
>
>  #include "../../str.h"
>  #include "../../md5.h"
> -#include "../../sha256.h"
> +#include "../srutils/sha256.h"
>
>  /*
>   * add backslashes to special characters
> diff --git a/sha256.c b/lib/srutils/sha256.c
> similarity index 98%
> rename from sha256.c
> rename to lib/srutils/sha256.c
> index 187d11d..087736d 100644
> --- a/sha256.c
> +++ b/lib/srutils/sha256.c
> @@ -12,7 +12,7 @@
>   *    notice, this list of conditions and the following disclaimer.
>   * 2. Redistributions in binary form must reproduce the above copyright
>   *    notice, this list of conditions and the following disclaimer in the
> - *    documentation and/or other materials provided with the distribution.
> + *    documentation and/or other materials provided w627ith the distribution.
>   * 3. Neither the name of the copyright holder nor the names of contributors
>   *    may be used to endorse or promote products derived from this software
>   *    without specific prior written permission.
> @@ -624,7 +624,7 @@ void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) {
>         }
>
>         /* Clean up state data: */
> -       MEMSET_BZERO(context, sizeof(context));
> +       MEMSET_BZERO(context, sizeof(*context));
>         usedspace = 0;
>  }
>
> @@ -645,7 +645,7 @@ char *SHA256_End(SHA256_CTX* context, char buffer[]) {
>                 }
>                 *buffer = (char)0;
>         } else {
> -               MEMSET_BZERO(context, sizeof(context));
> +               MEMSET_BZERO(context, sizeof(*context));
>         }
>         MEMSET_BZERO(digest, SHA256_DIGEST_LENGTH);
>         return buffer;
> @@ -954,7 +954,7 @@ void SHA512_Final(sha2_byte digest[], SHA512_CTX* context) {
>         }
>
>         /* Zero out state data */
> -       MEMSET_BZERO(context, sizeof(context));
> +       MEMSET_BZERO(context, sizeof(*context));
>  }
>
>  char *SHA512_End(SHA512_CTX* context, char buffer[]) {
> @@ -974,7 +974,7 @@ char *SHA512_End(SHA512_CTX* context, char buffer[]) {
>                 }
>                 *buffer = (char)0;
>         } else {
> -               MEMSET_BZERO(context, sizeof(context));
> +               MEMSET_BZERO(context, sizeof(*context));
>         }
>         MEMSET_BZERO(digest, SHA512_DIGEST_LENGTH);
>         return buffer;
> @@ -1029,7 +1029,7 @@ void SHA384_Final(sha2_byte digest[], SHA384_CTX* context) {
>         }
>
>         /* Zero out state data */
> -       MEMSET_BZERO(context, sizeof(context));
> +       MEMSET_BZERO(context, sizeof(*context));
>  }
>
>  char *SHA384_End(SHA384_CTX* context, char buffer[]) {
> @@ -1049,7 +1049,7 @@ char *SHA384_End(SHA384_CTX* context, char buffer[]) {
>                 }
>                 *buffer = (char)0;
>         } else {
> -               MEMSET_BZERO(context, sizeof(context));
> +               MEMSET_BZERO(context, sizeof(*context));
>         }
>         MEMSET_BZERO(digest, SHA384_DIGEST_LENGTH);
>         return buffer;
> diff --git a/sha256.h b/lib/srutils/sha256.h
> similarity index 100%
> rename from sha256.h
> rename to lib/srutils/sha256.h
> diff --git a/modules/pv/pv_trans.c b/modules/pv/pv_trans.c
> index 5250920..868123e 100644
> --- a/modules/pv/pv_trans.c
> +++ b/modules/pv/pv_trans.c
> @@ -47,7 +47,6 @@
>  #include "../../parser/parse_nameaddr.h"
>
>  #include "../../lib/kcore/strcommon.h"
> -#include "../../sha2utils.h"
>  #include "pv_trans.h"
>
>
> @@ -240,31 +239,31 @@ int tr_eval_string(struct sip_msg *msg, tr_param_t *tp, int subtype,
>                         if(!(val->flags&PV_VAL_STR))
>                                 val->rs.s = int2str(val->ri, &val->rs.len);
>                         compute_sha256(_tr_buffer, (u_int8_t*)val->rs.s, val->rs.len);
> -                       _tr_buffer[SHA256_LEN] = '\0';
> +                       _tr_buffer[SHA256_DIGEST_STRING_LENGTH -1] = '\0';
>                         val->flags = PV_VAL_STR;
>                         val->ri = 0;
>                         val->rs.s = _tr_buffer;
> -                       val->rs.len = SHA256_LEN;
> +                       val->rs.len = SHA256_DIGEST_STRING_LENGTH -1 ;
>                         break;
>                 case TR_S_SHA384:
>                         if(!(val->flags&PV_VAL_STR))
>                                 val->rs.s = int2str(val->ri, &val->rs.len);
>                         compute_sha384(_tr_buffer, (u_int8_t*)val->rs.s, val->rs.len);
> -                       _tr_buffer[SHA384_LEN] = '\0';
> +                       _tr_buffer[SHA384_DIGEST_STRING_LENGTH -1] = '\0';
>                         val->flags = PV_VAL_STR;
>                         val->ri = 0;
>                         val->rs.s = _tr_buffer;
> -                       val->rs.len = SHA384_LEN;
> +                       val->rs.len = SHA384_DIGEST_STRING_LENGTH -1;
>                         break;
>                 case TR_S_SHA512:
>                         if(!(val->flags&PV_VAL_STR))
>                                 val->rs.s = int2str(val->ri, &val->rs.len);
>                         compute_sha512(_tr_buffer, (u_int8_t*)val->rs.s, val->rs.len);
> -                       _tr_buffer[SHA512_LEN] = '\0';
> +                       _tr_buffer[SHA512_DIGEST_STRING_LENGTH -1] = '\0';
>                         val->flags = PV_VAL_STR;
>                         val->ri = 0;
>                         val->rs.s = _tr_buffer;
> -                       val->rs.len = SHA512_LEN;
> +                       val->rs.len = SHA512_DIGEST_STRING_LENGTH -1;
>                         break;
>                 case TR_S_ENCODEHEXA:
>                         if(!(val->flags&PV_VAL_STR))
> diff --git a/sha2utils.h b/sha2utils.h
> deleted file mode 100644
> index b3c5c96..0000000
> --- a/sha2utils.h
> +++ /dev/null
> @@ -1,17 +0,0 @@
> -/*!
> - * \file
> - * \brief SIP-router core :: sha2 hash support
> - * \ingroup core
> - * Module: \ref core
> - */
> -
> -#ifndef _SHA2UTILS_H
> -#define _SHA2UTILS_H
> -
> -#include "str.h"
> -
> -#define SHA256_LEN      64
> -#define SHA384_LEN      96
> -#define SHA512_LEN     128
> -
> -#endif /* _SHA2UTILS_H */
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev



-- 
Carsten Bock
CEO (Geschäftsführer)

ng-voice GmbH
Schomburgstr. 80
D-22767 Hamburg / Germany

http://www.ng-voice.com
mailto:carsten at ng-voice.com

Office +49 40 34927219
Fax +49 40 34927220

Sitz der Gesellschaft: Hamburg
Registergericht: Amtsgericht Hamburg, HRB 120189
Geschäftsführer: Carsten Bock
Ust-ID: DE279344284

Hier finden Sie unsere handelsrechtlichen Pflichtangaben:
http://www.ng-voice.com/imprint/



More information about the sr-dev mailing list