[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