[med-svn] [Git][med-team/ncbi-vdb][master] 6 commits: Removed further refers to vdb_mbed routines

Steffen Möller gitlab at salsa.debian.org
Mon Mar 2 11:55:28 GMT 2020



Steffen Möller pushed to branch master at Debian Med / ncbi-vdb


Commits:
b1eb274a by Steffen Moeller at 2020-03-02T01:15:10+01:00
Removed further refers to vdb_mbed routines

- - - - -
c200bef2 by Steffen Moeller at 2020-03-02T02:02:10+01:00
corrected URL in d/copyright

- - - - -
279956c3 by Steffen Moeller at 2020-03-02T02:04:31+01:00
routine-update: New upstream version

- - - - -
84ec5d9e by Steffen Moeller at 2020-03-02T02:04:33+01:00
New upstream version 2.10.4+dfsg
- - - - -
9b518f18 by Steffen Moeller at 2020-03-02T02:05:07+01:00
Update upstream source from tag 'upstream/2.10.4+dfsg'

Update to upstream version '2.10.4+dfsg'
with Debian dir a0a24f97feeee72859bd795b750494308b066ff8
- - - - -
97fcb6f3 by Steffen Moeller at 2020-03-02T02:18:52+01:00
Ready to upload

- - - - -


13 changed files:

- CHANGES.md
- build/Makefile.vers
- debian/changelog
- debian/copyright
- + debian/patches/remove_remaining_vdb_mbedtls_invocations.patch
- debian/patches/series
- libs/blast/blast-mgr.c
- libs/kdb/libkdb.vers.h
- libs/klib/release-vers.h
- libs/kns/http-request.c
- libs/ncbi-vdb/libncbi-vdb.vers
- libs/vdb/libvdb.vers.h
- test/kns/test-http-request.cpp


Changes:

=====================================
CHANGES.md
=====================================
@@ -1,6 +1,12 @@
 # NCBI External Developer Release:
 
 
+## NCBI VDB 2.10.4
+**February 26, 2020**
+
+  **kns**: fixed errors when using ngc file
+
+
 ## NCBI VDB 2.10.3
 **February 18, 2020**
 


=====================================
build/Makefile.vers
=====================================
@@ -23,4 +23,4 @@
 # ===========================================================================
 
 # NCBI-VDB and library version
-VERSION = 2.10.3
+VERSION = 2.10.4


=====================================
debian/changelog
=====================================
@@ -1,3 +1,17 @@
+ncbi-vdb (2.10.4+dfsg-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream version
+
+ -- Steffen Moeller <moeller at debian.org>  Mon, 02 Mar 2020 02:04:31 +0100
+
+ncbi-vdb (2.10.3+dfsg-2) unstable; urgency=medium
+
+  * Removed additional invocations of vdb_mbedtls to avoid
+    undefined references when linking against vdb.
+
+ -- Steffen Moeller <moeller at debian.org>  Mon, 02 Mar 2020 01:12:48 +0100
+
 ncbi-vdb (2.10.3+dfsg-1) unstable; urgency=medium
 
   [ Steffen Moeller ]


=====================================
debian/copyright
=====================================
@@ -1,6 +1,6 @@
 Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
 Upstream-Name: ngs
-Source: https://github.com/ncbi/ngs/releases
+Source: https://github.com/ncbi/ncbi-vdb/releases
 Files-Excluded: */ext
                 */MSVC
                 */Makefile.mac


=====================================
debian/patches/remove_remaining_vdb_mbedtls_invocations.patch
=====================================
@@ -0,0 +1,355 @@
+Index: ncbi-vdb/libs/cloud/aws-auth.c
+===================================================================
+--- ncbi-vdb.orig/libs/cloud/aws-auth.c
++++ ncbi-vdb/libs/cloud/aws-auth.c
+@@ -31,8 +31,8 @@
+ 
+ #include <kns/http.h> /* KClientHttpRequest */
+ 
+-#include <mbedtls/base64.h> /* vdb_mbedtls_base64_encode */
+-#include <mbedtls/md.h> /* vdb_mbedtls_md_hmac */
++#include <mbedtls/base64.h> /* mbedtls_base64_encode */
++#include <mbedtls/md.h> /* mbedtls_md_hmac */
+ 
+ #include "aws-priv.h" /* AWSDoAuthentication */
+ #include "cloud-priv.h" /* struct AWS */
+@@ -45,12 +45,12 @@ static rc_t HMAC_SHA1(
+ {
+     int ret = 0;
+ 
+-    const mbedtls_md_info_t *md_info = vdb_mbedtls_md_info_from_type(MBEDTLS_MD_SHA1);
++    const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA1);
+ 
+     size_t keylen = string_measure(key, NULL);
+     size_t ilen = string_measure(input, NULL);
+ 
+-    ret = vdb_mbedtls_md_hmac(md_info, (unsigned char *)key, keylen,
++    ret = mbedtls_md_hmac(md_info, (unsigned char *)key, keylen,
+         (unsigned char *)input, ilen, output);
+ 
+     return ret == 0
+@@ -75,7 +75,7 @@ static rc_t Base64(
+     puts("");
+ #endif
+ 
+-    if (vdb_mbedtls_base64_encode((unsigned char *)dst, dlen, &olen, src, slen) != 0)
++    if (mbedtls_base64_encode((unsigned char *)dst, dlen, &olen, src, slen) != 0)
+         rc = RC(rcCloud, rcUri, rcEncoding, rcString, rcInsufficient);
+ 
+ #if DEBUGGING
+Index: ncbi-vdb/libs/cloud/gcp.c
+===================================================================
+--- ncbi-vdb.orig/libs/cloud/gcp.c
++++ ncbi-vdb/libs/cloud/gcp.c
+@@ -55,7 +55,7 @@ struct GCP;
+ 
+ #include <kproc/procmgr.h>
+ 
+-#include <mbedtls/md.h> /* vdb_mbedtls_md_hmac */
++#include <mbedtls/md.h> /* mbedtls_md_hmac */
+ #include <mbedtls/pk.h>
+ #include <mbedtls/ctr_drbg.h>
+ #include <mbedtls/entropy.h>
+@@ -267,10 +267,10 @@ const String ** output)
+         , pid
+         );
+ 
+-    vdb_mbedtls_entropy_init(&ent_ctx);
++    mbedtls_entropy_init(&ent_ctx);
+ 
+-    vdb_mbedtls_ctr_drbg_init(&ctr_drbg);
+-    ret = vdb_mbedtls_ctr_drbg_seed(
++    mbedtls_ctr_drbg_init(&ctr_drbg);
++    ret = mbedtls_ctr_drbg_seed(
+         &ctr_drbg,
+         mbedtls_entropy_func,
+         &ent_ctx,
+@@ -281,20 +281,20 @@ const String ** output)
+     {
+         /* 1. parse key_PEM */
+         mbedtls_pk_context pk;
+-        vdb_mbedtls_pk_init(&pk);
+-        ret = vdb_mbedtls_pk_parse_key(&pk,
++        mbedtls_pk_init(&pk);
++        ret = mbedtls_pk_parse_key(&pk,
+             (unsigned char *)key_PEM,
+             string_measure(key_PEM, NULL) + 1,
+             NULL, 0);
+         if (ret == 0)
+         {
+             /* 2. generate the checksum */
+-            const mbedtls_md_info_t * info = vdb_mbedtls_md_info_from_type(md_type);
+-            size_t dsize = vdb_mbedtls_md_get_size(info);
++            const mbedtls_md_info_t * info = mbedtls_md_info_from_type(md_type);
++            size_t dsize = mbedtls_md_get_size(info);
+ 
+             unsigned char checksum[512 / 8];
+             assert(sizeof checksum >= dsize);
+-            ret = vdb_mbedtls_md(info,
++            ret = mbedtls_md(info,
+                 (const unsigned char *)input,
+                 string_measure(input, NULL),
+                 checksum);
+@@ -302,14 +302,14 @@ const String ** output)
+             {
+                 /* 3. compute the signature */
+                 String * out = NULL;
+-                mbedtls_rsa_context * ctx = vdb_mbedtls_pk_rsa(pk);
++                mbedtls_rsa_context * ctx = mbedtls_pk_rsa(pk);
+ 
+                 out = malloc(sizeof(String) + ctx->len);
+                 if (out != NULL)
+                 {
+                     StringInit( out, (char*)out + sizeof(String), ctx->len, (uint32_t)ctx->len );
+ 
+-                    ret = vdb_mbedtls_rsa_rsassa_pkcs1_v15_sign(
++                    ret = mbedtls_rsa_rsassa_pkcs1_v15_sign(
+                         ctx,
+                         mbedtls_ctr_drbg_random,
+                         (void *)& ctr_drbg,
+@@ -323,8 +323,8 @@ const String ** output)
+                     {
+ #ifdef _DEBUGGING
+                         /* 4. verify the signature */
+-                        ret = vdb_mbedtls_rsa_rsassa_pkcs1_v15_verify(
+-                            vdb_mbedtls_pk_rsa(pk),
++                        ret = mbedtls_rsa_rsassa_pkcs1_v15_verify(
++                            mbedtls_pk_rsa(pk),
+                             NULL,
+                             NULL,
+                             MBEDTLS_RSA_PUBLIC,
+@@ -335,14 +335,14 @@ const String ** output)
+                             );
+                         if (ret != 0)
+                         {
+-                            TRACE("vdb_mbedtls_rsa_rsassa_pkcs1_v15_verify = -%#.4X\n", -ret);
++                            TRACE("mbedtls_rsa_rsassa_pkcs1_v15_verify = -%#.4X\n", -ret);
+                             rc = RC(rcCloud, rcUri, rcInitializing, rcEncryption, rcFailed);
+                         }
+ #endif
+                     }
+                     else
+                     {
+-                        TRACE("vdb_mbedtls_rsa_rsassa_pkcs1_v15_sign = -%#.4X\n", -ret);
++                        TRACE("mbedtls_rsa_rsassa_pkcs1_v15_sign = -%#.4X\n", -ret);
+                         rc = RC(rcCloud, rcUri, rcInitializing, rcEncryption, rcFailed);
+                     }
+ 
+@@ -362,26 +362,26 @@ const String ** output)
+             }
+             else
+             {
+-                TRACE("vdb_mbedtls_md = -%#.4X\n", -ret);
++                TRACE("mbedtls_md = -%#.4X\n", -ret);
+                 rc = RC(rcCloud, rcUri, rcInitializing, rcEncryption, rcFailed);
+             }
+         }
+         else
+         {
+-            TRACE("vdb_mbedtls_pk_parse_key = -%#.4X\n", -ret);
++            TRACE("mbedtls_pk_parse_key = -%#.4X\n", -ret);
+             rc = RC(rcCloud, rcUri, rcInitializing, rcEncryption, rcFailed);
+         }
+ 
+-        vdb_mbedtls_pk_free(&pk);
++        mbedtls_pk_free(&pk);
+     }
+     else
+     {
+-        TRACE("vdb_mbedtls_ctr_drbg_seed = -%#.4X\n", -ret);
++        TRACE("mbedtls_ctr_drbg_seed = -%#.4X\n", -ret);
+         rc = RC(rcCloud, rcUri, rcInitializing, rcEncryption, rcFailed);
+     }
+ 
+-    vdb_mbedtls_entropy_free(&ent_ctx);
+-    vdb_mbedtls_ctr_drbg_free(&ctr_drbg);
++    mbedtls_entropy_free(&ent_ctx);
++    mbedtls_ctr_drbg_free(&ctr_drbg);
+ 
+     return rc;
+ }
+Index: ncbi-vdb/libs/kns/tls.c
+===================================================================
+--- ncbi-vdb.orig/libs/kns/tls.c
++++ ncbi-vdb/libs/kns/tls.c
+@@ -432,11 +432,11 @@ rc_t tlsg_init_certs ( KTLSGlobals *self
+                 {
+                 case kptFile:
+                     STATUS ( STAT_GEEK, "Parsing text from CA root certificate file '%s'\n", path);
+-                    ret = vdb_mbedtls_x509_crt_parse_file ( &self -> cacert, path );
++                    ret = mbedtls_x509_crt_parse_file ( &self -> cacert, path );
+                     break;
+                 case kptDir:
+                     STATUS ( STAT_GEEK, "Parsing text from CA root certificate directory '%s'\n", path );
+-                    ret = vdb_mbedtls_x509_crt_parse_path ( &self -> cacert, path );
++                    ret = mbedtls_x509_crt_parse_path ( &self -> cacert, path );
+                     break;
+                 }
+                 
+Index: ncbi-vdb/libs/krypto/rsa-aes-hmac.c
+===================================================================
+--- ncbi-vdb.orig/libs/krypto/rsa-aes-hmac.c
++++ ncbi-vdb/libs/krypto/rsa-aes-hmac.c
+@@ -178,17 +178,17 @@ void EncryptStuffWhack ( EncryptStuff *
+     switch ( s -> state )
+     {
+     case es_aes:
+-        vdb_mbedtls_aes_free ( & s -> aes );
++        mbedtls_aes_free ( & s -> aes );
+     case es_md:
+-        vdb_mbedtls_md_free ( & s -> md );
++        mbedtls_md_free ( & s -> md );
+     case es_aes_key:
+         memset ( s -> sk, 0, sizeof s -> sk );
+     case es_pek:
+-        vdb_mbedtls_pk_free ( & s -> pek );
++        mbedtls_pk_free ( & s -> pek );
+     case es_ctr_drbg:
+-        vdb_mbedtls_ctr_drbg_free ( & s -> ctr_drbg );
++        mbedtls_ctr_drbg_free ( & s -> ctr_drbg );
+     case es_entropy:
+-        vdb_mbedtls_entropy_free ( & s -> entropy );
++        mbedtls_entropy_free ( & s -> entropy );
+         break;
+     }
+ }
+@@ -208,22 +208,22 @@ rc_t EncryptStuffAdvance ( EncryptStuff
+     switch ( state )
+     {
+     case es_entropy:
+-        vdb_mbedtls_entropy_init ( & s -> entropy );
++        mbedtls_entropy_init ( & s -> entropy );
+         break;
+     case es_ctr_drbg:
+-        vdb_mbedtls_ctr_drbg_init ( & s -> ctr_drbg );
++        mbedtls_ctr_drbg_init ( & s -> ctr_drbg );
+         break;
+     case es_pek:
+-        vdb_mbedtls_pk_init ( & s -> pek );
++        mbedtls_pk_init ( & s -> pek );
+         break;
+     case es_aes_key:
+         rc = CALL_MBEDTLS ( mbedtls_ctr_drbg_random, ( & s -> ctr_drbg, s -> sk, sizeof s -> sk ) );
+         break;
+     case es_md:
+-        vdb_mbedtls_md_init ( & s -> md );
++        mbedtls_md_init ( & s -> md );
+         break;
+     case es_aes:
+-        vdb_mbedtls_aes_init ( & s -> aes );
++        mbedtls_aes_init ( & s -> aes );
+         break;
+     }
+ 
+@@ -386,7 +386,7 @@ rc_t RsaAesHmacEncryptInt ( KDataBuffer
+                 break;
+             STATUS ( STAT_PRG, "%s - setting up MD context for SHA-256\n", __func__ );
+             rc = CALL_MBEDTLS ( mbedtls_md_setup, ( & s . md,
+-                vdb_mbedtls_md_info_from_type ( MBEDTLS_MD_SHA256 ), true ) );
++                mbedtls_md_info_from_type ( MBEDTLS_MD_SHA256 ), true ) );
+             if ( rc != 0 )
+                 break;
+ 
+@@ -457,10 +457,10 @@ rc_t RsaAesHmacEncryptInt ( KDataBuffer
+             STATUS ( STAT_GEEK, "%s - deriving HMAC key from iv and AES key\n", __func__ );
+             for ( i = 0; i < 8 * 1024; ++ i )
+             {
+-                vdb_mbedtls_md_starts ( & s . md );
+-                vdb_mbedtls_md_update ( & s . md, digest . p, digest . s );
+-                vdb_mbedtls_md_update ( & s . md, s . sk, sizeof s . sk );
+-                vdb_mbedtls_md_finish ( & s . md, digest . p );
++                mbedtls_md_starts ( & s . md );
++                mbedtls_md_update ( & s . md, digest . p, digest . s );
++                mbedtls_md_update ( & s . md, s . sk, sizeof s . sk );
++                mbedtls_md_finish ( & s . md, digest . p );
+             }
+ 
+             /* at this point, the digest has sensitive information */
+@@ -532,18 +532,18 @@ void DecryptStuffWhack ( DecryptStuff *
+     switch ( s -> state )
+     {
+     case ds_aes:
+-        vdb_mbedtls_aes_free ( & s -> aes );
++        mbedtls_aes_free ( & s -> aes );
+     case ds_md:
+         memset ( s -> digest, 0, sizeof s -> digest );
+-        vdb_mbedtls_md_free ( & s -> md );
++        mbedtls_md_free ( & s -> md );
+     case ds_aes_key:
+         memset ( s -> sk, 0, sizeof s -> sk );
+     case ds_pdk:
+-        vdb_mbedtls_pk_free ( & s -> pdk );
++        mbedtls_pk_free ( & s -> pdk );
+     case ds_ctr_drbg:
+-        vdb_mbedtls_ctr_drbg_free ( & s -> ctr_drbg );
++        mbedtls_ctr_drbg_free ( & s -> ctr_drbg );
+     case ds_entropy:
+-        vdb_mbedtls_entropy_free ( & s -> entropy );
++        mbedtls_entropy_free ( & s -> entropy );
+         break;
+     }
+ }
+@@ -563,21 +563,21 @@ rc_t DecryptStuffAdvance ( DecryptStuff
+     switch ( state )
+     {
+     case ds_entropy:
+-        vdb_mbedtls_entropy_init ( & s -> entropy );
++        mbedtls_entropy_init ( & s -> entropy );
+         break;
+     case ds_ctr_drbg:
+-        vdb_mbedtls_ctr_drbg_init ( & s -> ctr_drbg );
++        mbedtls_ctr_drbg_init ( & s -> ctr_drbg );
+         break;
+     case ds_pdk:
+-        vdb_mbedtls_pk_init ( & s -> pdk );
++        mbedtls_pk_init ( & s -> pdk );
+         break;
+     case ds_aes_key:
+         break;
+     case ds_md:
+-        vdb_mbedtls_md_init ( & s -> md );
++        mbedtls_md_init ( & s -> md );
+         break;
+     case ds_aes:
+-        vdb_mbedtls_aes_init ( & s -> aes );
++        mbedtls_aes_init ( & s -> aes );
+         break;
+     }
+ 
+@@ -645,10 +645,10 @@ rc_t RsaAesHmacDecryptInt ( KDataBuffer
+ 
+             /* capture encrypted symmetric key */
+             STATUS ( STAT_GEEK, "%s - capturing esk from input\n", __func__ );
+-            esk = RgnSubRgn2 ( & ib, 0, vdb_mbedtls_pk_get_len ( & s . pdk ) );
++            esk = RgnSubRgn2 ( & ib, 0, mbedtls_pk_get_len ( & s . pdk ) );
+             STATUS ( STAT_GEEK, "%s - esk Rgn ptr = %p\n", __func__, esk . p );
+             STATUS ( STAT_GEEK, "%s - esk Rgn size = %zu\n", __func__, esk . s );
+-            if ( esk . s != vdb_mbedtls_pk_get_len ( & s . pdk ) )
++            if ( esk . s != mbedtls_pk_get_len ( & s . pdk ) )
+             {
+                 rc = RC ( rcKrypto, rcBlob, rcDecrypting, rcData, rcInsufficient );
+                 break;
+@@ -740,7 +740,7 @@ rc_t RsaAesHmacDecryptInt ( KDataBuffer
+                 break;
+             STATUS ( STAT_PRG, "%s - setting up MD context for SHA-256\n", __func__ );
+             rc = CALL_MBEDTLS ( mbedtls_md_setup, ( & s . md,
+-                vdb_mbedtls_md_info_from_type ( MBEDTLS_MD_SHA256 ), true ) );
++                mbedtls_md_info_from_type ( MBEDTLS_MD_SHA256 ), true ) );
+             if ( rc != 0 )
+                 break;
+ 
+@@ -755,10 +755,10 @@ rc_t RsaAesHmacDecryptInt ( KDataBuffer
+             STATUS ( STAT_GEEK, "%s - deriving HMAC key from iv and AES key\n", __func__ );
+             for ( i = 0; i < 8 * 1024; ++ i )
+             {
+-                vdb_mbedtls_md_starts ( & s . md );
+-                vdb_mbedtls_md_update ( & s . md, s . digest, sizeof s . digest );
+-                vdb_mbedtls_md_update ( & s . md, s . sk, sizeof s . sk );
+-                vdb_mbedtls_md_finish ( & s . md, s . digest );
++                mbedtls_md_starts ( & s . md );
++                mbedtls_md_update ( & s . md, s . digest, sizeof s . digest );
++                mbedtls_md_update ( & s . md, s . sk, sizeof s . sk );
++                mbedtls_md_finish ( & s . md, s . digest );
+             }
+ 
+             /* at this point, the digest has sensitive information */


=====================================
debian/patches/series
=====================================
@@ -12,3 +12,4 @@ mbedtls_ssl_init.patch
 i386-uint64_msbit.patch
 # fix_linking.patch
 fix_path_mbedtls.patch
+remove_remaining_vdb_mbedtls_invocations.patch


=====================================
libs/blast/blast-mgr.c
=====================================
@@ -50,7 +50,7 @@
 #include <stdio.h> /* fprintf */
 #include <string.h> /* memset */
 
-#define TOOLKIT "sratoolkit2_10_3"
+#define TOOLKIT "sratoolkit2_10_4"
 
 /******************************************************************************/
 


=====================================
libs/kdb/libkdb.vers.h
=====================================
@@ -24,4 +24,4 @@
 *
 */
 
-#define LIBKDB_VERS 0x02070023
+#define LIBKDB_VERS 0x02070024


=====================================
libs/klib/release-vers.h
=====================================
@@ -28,7 +28,7 @@
 
 
 /* Version of current SRA Toolkit Release */
-#define RELEASE_VERS 0x020A0003
+#define RELEASE_VERS 0x020A0004
 
 
 /* Type of Version of current SRA Toolkit Release is one of:


=====================================
libs/kns/http-request.c
=====================================
@@ -145,7 +145,8 @@ rc_t KClientHttpMakeRequestInt ( const KClientHttp *self,
     rc_t rc;
 
     /* create the object with empty buffer */
-    KClientHttpRequest * req = calloc ( 1, sizeof * req );
+    KClientHttpRequest * req
+        = (KClientHttpRequest *) calloc ( 1, sizeof * req );
     if ( req == NULL )
         rc = RC ( rcNS, rcNoTarg, rcAllocating, rcMemory, rcNull );
     else
@@ -160,7 +161,8 @@ rc_t KClientHttpMakeRequestInt ( const KClientHttp *self,
             rc = KDataBufferMakeBytes ( & req -> body, 0 );
             if ( rc == 0 )
             {
-                KRefcountInit ( & req -> refcount, 1, "KClientHttpRequest", "make", buf -> base );
+                KRefcountInit ( & req -> refcount, 1, "KClientHttpRequest",
+                    "make", (char*) buf -> base );
 
                 /* fill out url_buffer with URL */
                 rc = KClientHttpRequestInit ( req, block, buf );
@@ -226,7 +228,8 @@ LIB_EXPORT rc_t CC KClientHttpVMakeRequest ( const KClientHttp *self,
                 {
                     /* parse the URL */
                     URLBlock block;
-                    rc = ParseUrl ( & block, buf . base, buf . elem_count - 1 );
+                    rc = ParseUrl ( & block, (char*) buf . base,
+                        buf . elem_count - 1 );
                     if ( rc == 0 )
                         rc = KClientHttpMakeRequestInt ( self, _req, & block, & buf );
                 }
@@ -303,7 +306,8 @@ rc_t CC KNSManagerMakeClientRequestInt ( const KNSManager *self,
                 {
                     /* parse the URL */
                     URLBlock block;
-                    rc = ParseUrl ( & block, buf . base, buf . elem_count - 1 );
+                    rc = ParseUrl ( & block, (char*) buf . base,
+                        buf . elem_count - 1 );
                     if ( rc == 0 )
                     {
                         KClientHttp * http;
@@ -731,7 +735,7 @@ rc_t
 UrlEncode( const char * source, size_t size, char ** res )
 {   /* source: https://www.tutorialspoint.com/html/html_url_encoding.htm */
     char * cur;
-    int i;
+    size_t i = 0;
     assert ( source != NULL );
     assert ( res != NULL );
 
@@ -837,7 +841,9 @@ LIB_EXPORT rc_t CC KClientHttpRequestVAddQueryParam ( KClientHttpRequest *self,
                             KDataBufferWhack( & self -> url_buffer );
                             self -> url_buffer = newBuf;
                             /* re-parse the new URL */
-                            rc = ParseUrl ( & self -> url_block, self -> url_buffer . base, self -> url_buffer . elem_count - 1 );
+                            rc = ParseUrl ( & self -> url_block,
+                                (char*) self -> url_buffer . base,
+                                self -> url_buffer . elem_count - 1 );
                         }
                     }
                     free ( encValue );
@@ -862,6 +868,58 @@ LIB_EXPORT rc_t CC KClientHttpRequestAddQueryParam ( KClientHttpRequest *self, c
     return rc;
 }
 
+static rc_t urlEncodeBase64(const String ** encoding) {
+    int n = 0;
+    size_t i = 0;
+
+    if (encoding == NULL || *encoding == NULL || (*encoding)->addr == NULL)
+        return 0;
+
+    for (i = 0; i < (*encoding)->size; ++i) {
+        if (((*encoding)->addr)[i] == '+' ||
+            ((*encoding)->addr)[i] == '/')
+        {
+            ++n;
+        }
+    }
+
+    if (n > 0) {
+        size_t iFrom = 0, iTo = 0;
+        const char *from = (*encoding)->addr;
+        char *to = NULL;
+        uint32_t len = (*encoding)->size + n + n;
+
+        String * encoded = (String *) calloc(1, sizeof * encoded + len + 1);
+        if (encoded == NULL)
+            return RC(rcNS, rcString, rcAllocating, rcMemory, rcExhausted);
+
+        to = (char*)(encoded + 1);
+        StringInit(encoded, to, len, len);
+
+        for (iFrom = 0; iFrom < (*encoding)->size; ++iFrom) {
+            if (from[iFrom] == '+') {
+                to[iTo++] = '%';
+                to[iTo++] = '2';
+                to[iTo++] = 'b';
+            }
+            else if (from[iFrom] == '/') {
+                to[iTo++] = '%';
+                to[iTo++] = '2';
+                to[iTo++] = 'f';
+            }
+            else
+                to[iTo++] = from[iFrom];
+        }
+        to[iTo] = '\0';
+        assert(iTo == len);
+
+        StringWhack(*encoding);
+        *encoding = encoded;
+    }
+
+    return 0;
+}
+
 LIB_EXPORT rc_t CC KClientHttpRequestAddPostFileParam ( KClientHttpRequest * self, const char * name, const char * path )
 {
     rc_t rc = 0;
@@ -902,8 +960,10 @@ LIB_EXPORT rc_t CC KClientHttpRequestAddPostFileParam ( KClientHttpRequest * sel
                             rc = KMMapAddrRead( mm, & fileStart );
                             if ( rc == 0 )
                             {
-                                const String * encoded;
+                                const String * encoded = NULL;
                                 rc = encodeBase64( & encoded, fileStart, fileSize );
+                                if ( rc == 0 )
+                                    rc = urlEncodeBase64( & encoded );
                                 if ( rc == 0 )
                                 {
                                     rc = KClientHttpRequestAddPostParam( self, "%s=%S", name, encoded );
@@ -1315,7 +1375,7 @@ rc_t KClientHttpRequestHandleRedirection ( KClientHttpRequest *self, const char
         if ( rc == 0 )
         {
             /* parse the URI into local url_block */
-            rc = ParseUrl ( &b, uri . base, uri . elem_count - 1 );
+            rc = ParseUrl ( &b, (char *) uri . base, uri . elem_count - 1 );
             if ( rc == 0 )
             {
                 KClientHttp *http = self -> http;
@@ -1379,13 +1439,15 @@ rc_t KClientHttpRequestSendReceiveNoBodyInt ( KClientHttpRequest *self, KClientH
             break;
 
         /* send the message and create a response */
-        rc = KClientHttpSendReceiveMsg ( self -> http, _rslt, buffer.base,
-            buffer.elem_count - 1, NULL, self -> url_buffer . base );
+        rc = KClientHttpSendReceiveMsg ( self -> http, _rslt,
+            (char *) buffer.base,
+            buffer.elem_count - 1, NULL, (char *) self -> url_buffer . base );
         if ( rc != 0 )
         {
             KClientHttpClose ( self -> http );
-            rc = KClientHttpSendReceiveMsg ( self -> http, _rslt, buffer.base,
-                buffer.elem_count - 1, NULL, self -> url_buffer . base );
+            rc = KClientHttpSendReceiveMsg ( self -> http, _rslt,
+                (char *) buffer.base, buffer.elem_count - 1, NULL,
+                (char *) self -> url_buffer . base );
             if ( rc != 0 )
                 break;
         }
@@ -1464,7 +1526,8 @@ static
 rc_t KClientHttpRequestSendReceiveNoBody ( KClientHttpRequest *self, KClientHttpResult **_rslt, const char *method )
 {
     KHttpRetrier retrier;
-    rc_t rc = KHttpRetrierInit ( & retrier, self -> url_buffer . base, self -> http -> mgr );
+    rc_t rc = KHttpRetrierInit ( & retrier,
+        (char *) self -> url_buffer . base, self -> http -> mgr );
 
     if ( rc == 0 )
     {
@@ -1632,11 +1695,15 @@ rc_t CC KClientHttpRequestPOST_Int ( KClientHttpRequest *self, KClientHttpResult
         }
 
         /* send the message and create a response */
-        rc = KClientHttpSendReceiveMsg ( self -> http, _rslt, buffer.base, buffer.elem_count, body, self -> url_buffer . base );
+        rc = KClientHttpSendReceiveMsg ( self -> http, _rslt,
+            (char *) buffer.base, buffer.elem_count, body,
+            (char *) self -> url_buffer . base );
         if ( rc != 0 )
         {
             KClientHttpClose ( self -> http );
-            rc = KClientHttpSendReceiveMsg ( self -> http, _rslt, buffer.base, buffer.elem_count, NULL, self -> url_buffer . base );
+            rc = KClientHttpSendReceiveMsg ( self -> http, _rslt,
+                (char *) buffer.base, buffer.elem_count, NULL,
+                (char *) self -> url_buffer . base );
         }
         KDataBufferWhack( & buffer );
         if ( rc != 0 )
@@ -1803,7 +1870,8 @@ LIB_EXPORT rc_t CC KClientHttpRequestPOST ( KClientHttpRequest *self, KClientHtt
         return RC ( rcNS, rcNoTarg, rcUpdating, rcParam, rcNull );
     }
 
-    rc = KHttpRetrierInit ( & retrier, self -> url_buffer . base, self -> http -> mgr );
+    rc = KHttpRetrierInit ( & retrier, (char *) self -> url_buffer . base,
+        self -> http -> mgr );
 
     if ( rc == 0 )
     {
@@ -1818,7 +1886,7 @@ LIB_EXPORT rc_t CC KClientHttpRequestPOST ( KClientHttpRequest *self, KClientHtt
             assert ( * _rslt );
 
             if ( ( * _rslt ) -> status  == 403 &&
-                 GovSiteByHttp ( self -> url_buffer . base ) )
+                 GovSiteByHttp ((char *) self -> url_buffer . base ) )
             {
                 break;
             }


=====================================
libs/ncbi-vdb/libncbi-vdb.vers
=====================================
@@ -1 +1 @@
-2.10.3
+2.10.4


=====================================
libs/vdb/libvdb.vers.h
=====================================
@@ -24,4 +24,4 @@
 *
 */
 
-#define LIBVDB_VERS 0x02070023
+#define LIBVDB_VERS 0x02070024


=====================================
test/kns/test-http-request.cpp
=====================================
@@ -34,13 +34,17 @@
 #include <kns/manager.h>
 #include <kns/kns-mgr-priv.h>
 
-#include <../libs/kns/http-priv.h>
-#include <../libs/vfs/resolver-cgi.h> /* SDL_CGI */
+#include "../libs/kns/http-priv.h"
+#include "../libs/vfs/resolver-cgi.h" /* SDL_CGI */
 
 #include <kapp/args.h> // Args
 
 #include <ktst/unit_test.hpp>
 
+#include "../libs/kns/http-request.c" /* urlEncodeBase64 */
+
+#define ALL
+
 static rc_t argsHandler ( int argc, char * argv [] );
 TEST_SUITE_WITH_ARGS_HANDLER ( HttpRequestVerifyURLSuite, argsHandler );
 
@@ -77,6 +81,7 @@ public:
     string m_url;
 };
 
+#ifdef ALL
 FIXTURE_TEST_CASE(HttpRequest_POST_NoParams, HttpRequestFixture)
 {   // Bug: KClientHttpRequestPOST crashed if request had no parameters
     MakeRequest( GetName() );
@@ -86,6 +91,7 @@ FIXTURE_TEST_CASE(HttpRequest_POST_NoParams, HttpRequestFixture)
     REQUIRE_RC ( KClientHttpRequestPOST ( m_req, & rslt ) );
     REQUIRE_RC ( KClientHttpResultRelease ( rslt ) );
 }
+#endif
 
 // KClientHttpRequestAddQueryParam
 
@@ -104,6 +110,7 @@ public:
     }
 };
 
+#ifdef ALL
 FIXTURE_TEST_CASE(HttpRequestAddQueryParam_SelfNull, HttpRequestFixture)
 {
     MakeRequest( GetName() );
@@ -324,6 +331,39 @@ FIXTURE_TEST_CASE(HttpReliableRequest_BadCgi, HttpFixture)
     REQUIRE_EQ ( code, 404u );
     REQUIRE_RC ( KHttpResultRelease( rslt ) );
 }
+#endif
+
+TEST_CASE(Test_urlEncodePluses) {
+    REQUIRE_RC(urlEncodeBase64(NULL));
+
+    const String * encoding = NULL;
+    REQUIRE_RC(urlEncodeBase64(&encoding));
+
+    encoding = (String*) calloc(1, sizeof *encoding);
+    REQUIRE_RC(urlEncodeBase64(&encoding));
+    free((void*)encoding);
+
+    String s, d;
+
+    CONST_STRING(&s, "");
+    StringCopy(&encoding, &s);
+    REQUIRE_RC(urlEncodeBase64(&encoding));
+    REQUIRE_EQ(StringCompare(encoding, &s), 0);
+    StringWhack(encoding);
+
+    CONST_STRING(&s, "a");
+    StringCopy(&encoding, &s);
+    REQUIRE_RC(urlEncodeBase64(&encoding));
+    REQUIRE_EQ(StringCompare(encoding, &s), 0);
+    StringWhack(encoding);
+
+    CONST_STRING(&s, "+/");
+    StringCopy(&encoding, &s);
+    REQUIRE_RC(urlEncodeBase64(&encoding));
+    CONST_STRING(&d, "%2b%2f");
+    REQUIRE_EQ(StringCompare(encoding, &d), 0);
+    StringWhack(encoding);
+}
 
 //////////////////////////////////////////// Main
 



View it on GitLab: https://salsa.debian.org/med-team/ncbi-vdb/-/compare/32a38ab9bb036ecb313771a4c2b26c1f5750ac60...97fcb6f3dedf73de2bf91d17be44b20b5fcd43f5

-- 
View it on GitLab: https://salsa.debian.org/med-team/ncbi-vdb/-/compare/32a38ab9bb036ecb313771a4c2b26c1f5750ac60...97fcb6f3dedf73de2bf91d17be44b20b5fcd43f5
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20200302/8ea499f4/attachment-0001.html>


More information about the debian-med-commit mailing list