5
5
* Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
6
6
* Copyright (c) 2014-2015 Research Organization for Information Science
7
7
* and Technology (RIST). All rights reserved.
8
+ * Copyright (c) 2016 Mellanox Technologies, Inc.
9
+ * All rights reserved.
8
10
* $COPYRIGHT$
9
11
*
10
12
* Additional copyrights may follow
@@ -566,7 +568,7 @@ int opal_pmix_base_cache_keys_locally(const opal_process_name_t* id, const char*
566
568
}
567
569
568
570
/* search for each key in the decoded data */
569
- for (offset = 0 ; offset < len && '\0' != tmp_val [ offset ] ; ) {
571
+ for (offset = 0 ; offset < len ; ) {
570
572
/* type */
571
573
tmp = tmp_val + offset + strlen (tmp_val + offset ) + 1 ;
572
574
/* size */
@@ -679,31 +681,30 @@ static inline unsigned char pmi_base64_encsym (unsigned char value) {
679
681
assert (value < 64 );
680
682
681
683
if (value < 26 ) {
682
- return 'A' + value ;
684
+ return 'A' + value ;
683
685
} else if (value < 52 ) {
684
- return 'a' + (value - 26 );
686
+ return 'a' + (value - 26 );
685
687
} else if (value < 62 ) {
686
- return '0' + (value - 52 );
688
+ return '0' + (value - 52 );
687
689
}
688
690
689
691
return (62 == value ) ? '+' : '/' ;
690
692
}
691
693
692
694
static inline unsigned char pmi_base64_decsym (unsigned char value ) {
693
695
if ('+' == value ) {
694
- return 62 ;
696
+ return 62 ;
695
697
} else if ('/' == value ) {
696
- return 63 ;
698
+ return 63 ;
697
699
} else if (' ' == value ) {
698
- return 64 ;
700
+ return 64 ;
699
701
} else if (value <= '9' ) {
700
- return (value - '0' ) + 52 ;
702
+ return (value - '0' ) + 52 ;
701
703
} else if (value <= 'Z' ) {
702
- return (value - 'A' );
704
+ return (value - 'A' );
703
705
} else if (value <= 'z' ) {
704
- return (value - 'a' ) + 26 ;
706
+ return (value - 'a' ) + 26 ;
705
707
}
706
-
707
708
return 64 ;
708
709
}
709
710
@@ -725,12 +726,12 @@ static inline int pmi_base64_decode_block (const char in[4], unsigned char out[3
725
726
726
727
out [0 ] = in_dec [0 ] << 2 | in_dec [1 ] >> 4 ;
727
728
if (64 == in_dec [2 ]) {
728
- return 1 ;
729
+ return 1 ;
729
730
}
730
731
731
732
out [1 ] = in_dec [1 ] << 4 | in_dec [2 ] >> 2 ;
732
733
if (64 == in_dec [3 ]) {
733
- return 2 ;
734
+ return 2 ;
734
735
}
735
736
736
737
out [2 ] = ((in_dec [2 ] << 6 ) & 0xc0 ) | in_dec [3 ];
@@ -746,7 +747,7 @@ static char *pmi_encode(const void *val, size_t vallen)
746
747
747
748
outdata = calloc (((2 + vallen ) * 4 ) / 3 + 2 , 1 );
748
749
if (NULL == outdata ) {
749
- return NULL ;
750
+ return NULL ;
750
751
}
751
752
752
753
for (i = 0 , tmp = outdata ; i < vallen ; i += 3 , tmp += 4 ) {
@@ -760,24 +761,21 @@ static char *pmi_encode(const void *val, size_t vallen)
760
761
761
762
static uint8_t * pmi_decode (const char * data , size_t * retlen )
762
763
{
763
- size_t input_len = ( strlen (data ) - 1 ) / 4 ;
764
+ size_t input_len = strlen (data ) / 4 ;
764
765
unsigned char * ret ;
765
766
int out_len ;
766
767
size_t i ;
767
768
768
769
/* default */
769
770
* retlen = 0 ;
770
771
771
- ret = calloc (1 , 3 * input_len + 1 );
772
+ ret = calloc (1 , 3 * input_len );
772
773
if (NULL == ret ) {
773
774
return ret ;
774
775
}
775
-
776
776
for (i = 0 , out_len = 0 ; i < input_len ; i ++ , data += 4 ) {
777
- out_len += pmi_base64_decode_block (data , ret + 3 * i );
777
+ out_len += pmi_base64_decode_block (data , ret + 3 * i );
778
778
}
779
-
780
- ret [out_len ] = '\0' ;
781
779
* retlen = out_len ;
782
780
return ret ;
783
781
}
0 commit comments