@@ -81,19 +81,19 @@ static int get_pod_service_file_info(struct flb_kube *ctx, char **buffer)
8181 return packed ;
8282}
8383
84- static void extract_service_attribute (msgpack_object * attr_map , const char * key_name ,
84+ static void extract_service_attribute (msgpack_object * attr_map , const char * key_name ,
8585 char * dest , int max_len , int * dest_len , int * fields )
8686{
8787 struct flb_record_accessor * ra ;
8888 struct flb_ra_value * val ;
8989 const char * str_val ;
9090 size_t str_len ;
91-
91+
9292 ra = flb_ra_create ((char * )key_name , FLB_FALSE );
9393 if (!ra ) {
9494 return ;
9595 }
96-
96+
9797 val = flb_ra_get_value_object (ra , * attr_map );
9898 if (val && val -> type == FLB_RA_STRING ) {
9999 str_val = flb_ra_value_buffer (val , & str_len );
@@ -149,7 +149,7 @@ static void parse_pod_service_map(struct flb_kube *ctx, char *api_buf,
149149 for (i = 0 ; i < api_map .via .map .size ; i ++ ) {
150150 k = api_map .via .map .ptr [i ].key ;
151151 v = api_map .via .map .ptr [i ].val ;
152-
152+
153153 if (k .type != MSGPACK_OBJECT_STR || v .type != MSGPACK_OBJECT_MAP ) {
154154 flb_plg_error (ctx -> ins , "key and values are not string and map" );
155155 continue ;
@@ -169,15 +169,15 @@ static void parse_pod_service_map(struct flb_kube *ctx, char *api_buf,
169169 KEY_ATTRIBUTES_MAX_LEN , & attrs -> name_len , & attrs -> fields );
170170 extract_service_attribute (& v , "$Environment" , attrs -> environment ,
171171 KEY_ATTRIBUTES_MAX_LEN , & attrs -> environment_len , & attrs -> fields );
172- extract_service_attribute (& v , "$ServiceNameSource" , attrs -> name_source ,
172+ extract_service_attribute (& v , "$ServiceNameSource" , attrs -> name_source ,
173173 SERVICE_NAME_SOURCE_MAX_LEN , & attrs -> name_source_len , & attrs -> fields );
174174 if (attrs -> name [0 ] != '\0' || attrs -> environment [0 ] != '\0' ) {
175175 pthread_mutex_lock (mutex );
176176 flb_hash_table_add (ctx -> aws_pod_service_hash_table , pod_name , k .via .str .size ,
177177 attrs , sizeof (struct service_attributes ));
178178 pthread_mutex_unlock (mutex );
179179 }
180-
180+
181181 flb_free (attrs );
182182 flb_free (pod_name );
183183 }
@@ -287,58 +287,59 @@ int fetch_pod_service_map(struct flb_kube *ctx, char *api_server_url,
287287int determine_platform (struct flb_kube * ctx )
288288{
289289 int ret ;
290+ size_t i ;
290291 char * token_buf = NULL ;
291292 size_t token_size ;
292293 char * payload = NULL ;
293294 size_t payload_len ;
294- char * issuer_start ;
295+ char * issuer_start ;
295296 char * issuer_end ;
296- char * first_dot ;
297+ char * first_dot ;
297298 char * second_dot ;
298299 size_t payload_b64_len ;
299300 size_t padded_len ;
300301 char * payload_b64 ;
301302 size_t issuer_len ;
302303 char * issuer_value ;
303304 int is_eks ;
304-
305+
305306 /* Read serviceaccount token */
306307 ret = flb_utils_read_file (FLB_KUBE_TOKEN , & token_buf , & token_size );
307308 if (ret != 0 || !token_buf ) {
308309 return -1 ;
309310 }
310-
311+
311312 /* JWT tokens have 3 parts separated by dots: header.payload.signature */
312313 first_dot = strchr (token_buf , '.' );
313314 if (!first_dot ) {
314315 flb_free (token_buf );
315316 return -1 ;
316317 }
317-
318+
318319 second_dot = strchr (first_dot + 1 , '.' );
319320 if (!second_dot ) {
320321 flb_free (token_buf );
321322 return -1 ;
322323 }
323-
324+
324325 /* Extract and decode the payload (middle part) */
325326 payload_b64_len = second_dot - (first_dot + 1 );
326-
327+
327328 /* Calculate padded length */
328329 padded_len = payload_b64_len ;
329330 while (padded_len % 4 != 0 ) padded_len ++ ;
330-
331+
331332 payload_b64 = flb_malloc (padded_len + 1 );
332333 if (!payload_b64 ) {
333334 flb_errno ();
334335 flb_free (token_buf );
335336 return -1 ;
336337 }
337-
338+
338339 memcpy (payload_b64 , first_dot + 1 , payload_b64_len );
339-
340+
340341 /* Convert base64url to base64 and add padding */
341- for (size_t i = 0 ; i < payload_b64_len ; i ++ ) {
342+ for (i = 0 ; i < payload_b64_len ; i ++ ) {
342343 if (payload_b64 [i ] == '-' ) {
343344 payload_b64 [i ] = '+' ;
344345 }
@@ -350,7 +351,7 @@ int determine_platform(struct flb_kube *ctx)
350351 payload_b64 [payload_b64_len ++ ] = '=' ;
351352 }
352353 payload_b64 [padded_len ] = '\0' ;
353-
354+
354355 /* Base64 decode the payload */
355356 payload = flb_malloc (payload_b64_len * 3 / 4 + 4 ); /* Conservative size estimate */
356357 if (!payload ) {
@@ -359,50 +360,50 @@ int determine_platform(struct flb_kube *ctx)
359360 flb_free (payload_b64 );
360361 return -1 ;
361362 }
362-
363- ret = flb_base64_decode ((unsigned char * )payload , padded_len * 3 / 4 + 4 ,
363+
364+ ret = flb_base64_decode ((unsigned char * )payload , padded_len * 3 / 4 + 4 ,
364365 & payload_len , (unsigned char * )payload_b64 , padded_len );
365-
366+
366367 flb_free (token_buf );
367368 flb_free (payload_b64 );
368-
369+
369370 if (ret != 0 ) {
370371 flb_free (payload );
371372 return -1 ;
372373 }
373-
374+
374375 payload [payload_len ] = '\0' ;
375-
376+
376377 /* Look for "iss" field in the JSON payload */
377378 issuer_start = strstr (payload , "\"iss\":" );
378379 if (!issuer_start ) {
379380 flb_free (payload );
380381 return -1 ;
381382 }
382-
383+
383384 /* Skip to the value part */
384385 issuer_start = strchr (issuer_start , ':' );
385386 if (!issuer_start ) {
386387 flb_free (payload );
387388 return -1 ;
388389 }
389390 issuer_start ++ ;
390-
391+
391392 /* Skip whitespace and opening quote */
392393 while (* issuer_start == ' ' || * issuer_start == '\t' ) issuer_start ++ ;
393394 if (* issuer_start != '"' ) {
394395 flb_free (payload );
395396 return -1 ;
396397 }
397398 issuer_start ++ ;
398-
399+
399400 /* Find closing quote */
400401 issuer_end = strchr (issuer_start , '"' );
401402 if (!issuer_end ) {
402403 flb_free (payload );
403404 return -1 ;
404405 }
405-
406+
406407 /* Check if issuer contains EKS OIDC URL pattern */
407408 /* EKS OIDC URLs follow pattern: https://oidc.eks.{region}.amazonaws.com/id/{cluster-id} */
408409 issuer_len = issuer_end - issuer_start ;
@@ -419,7 +420,7 @@ int determine_platform(struct flb_kube *ctx)
419420 flb_free (payload );
420421 return 1 ; /* EKS detected */
421422 }
422-
423+
423424 flb_free (payload );
424425 return -1 ; /* Not EKS */
425426}
0 commit comments