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

Daniel-Constantin Mierla miconda at gmail.com
Wed Mar 19 15:16:08 CET 2014


Hello,

maybe the lib where you moved the sha files is not in linked by the 
module -- you have to add it in modules/pv/Makefile.

Cheers,
Daniel

On 19/03/14 14:47, Lucian Balaceanu wrote:
> Hi Carsten,
>
> Just a short mail to tell you I am looking into this issue.
>
> Thank you
>
> On 03/19/2014 12:35 PM, Carsten Bock wrote:
>> 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
>>
>>
>
>
> _______________________________________________
> sr-dev mailing list
> sr-dev at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

-- 
Daniel-Constantin Mierla - http://www.asipto.com
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda
Kamailio World Conference - April 2-4, 2014, Berlin, Germany
http://www.kamailioworld.com




More information about the sr-dev mailing list