@cryptotaxi247 / netdata-1 / commits / c7ce4601a

fix: fix a base64_encode bug (#13074)

kklionz committed Jun 29, 2022 at 21:00 UTC c7ce4601af61e6a16dc3461738215270eb96313b
1 file changed +6 -2
exporting/init_connectors.c
+6 -2
@@ -117,7 +117,7 @@ static size_t base64_encode(unsigned char *input, size_t input_size, char *outpu
117 return 0;
118 }
119 size_t count = 0;
120 - while (input_size > 3) {
120 + while (input_size >= 3) {
121 value = ((input[0] << 16) + (input[1] << 8) + input[2]) & 0xffffff;
122 output[0] = lookup[value >> 18];
123 output[1] = lookup[(value >> 12) & 0x3f];
@@ -138,6 +138,7 @@ static size_t base64_encode(unsigned char *input, size_t input_size, char *outpu
138 output[3] = '=';
139 //error("Base-64 encode (%06x) -> %c %c %c %c\n", (value>>2)&0xffff, output[0], output[1], output[2], output[3]);
140 count += 4;
141 + output[4] = '\0';
142 break;
143 case 1:
144 value = input[0] << 4;
@@ -147,10 +148,13 @@ static size_t base64_encode(unsigned char *input, size_t input_size, char *outpu
148 output[3] = '=';
149 //error("Base-64 encode (%06x) -> %c %c %c %c\n", value, output[0], output[1], output[2], output[3]);
150 count += 4;
151 + output[4] = '\0';
152 break;
153 case 0:
154 + output[0] = '\0';
155 break;
156 }
157 +
158 return count;
159 }
160
@@ -199,7 +203,7 @@ void simple_connector_init(struct instance *instance)
203 char *encoded_credentials = callocz(1, encoded_size);
204
205 base64_encode((unsigned char*)buffer_tostring(auth_string), buffer_strlen(auth_string), encoded_credentials, encoded_size);
202 -
206 +
207 buffer_flush(auth_string);
208 buffer_sprintf(auth_string, "Authorization: Basic %s\n", encoded_credentials);
209