3333
3434static int fetch_metadata (struct flb_stackdriver * ctx ,
3535 struct flb_upstream * upstream , char * uri ,
36- char * payload )
36+ flb_sds_t * payload )
3737{
3838 int ret ;
3939 int ret_code ;
@@ -44,21 +44,30 @@ static int fetch_metadata(struct flb_stackdriver *ctx,
4444 /* If runtime test mode is enabled, add test data */
4545 if (ctx -> ins -> test_mode == FLB_TRUE ) {
4646 if (strcmp (uri , FLB_STD_METADATA_PROJECT_ID_URI ) == 0 ) {
47- if (!flb_sds_cat (payload , "fluent-bit-test" , 15 )) {
47+ flb_sds_t tmp ;
48+ tmp = flb_sds_cat (* payload , "fluent-bit-test" , 15 );
49+ if (!tmp ) {
4850 return -1 ;
4951 }
52+ * payload = tmp ;
5053 return 0 ;
5154 }
5255 else if (strcmp (uri , FLB_STD_METADATA_ZONE_URI ) == 0 ) {
53- if (!flb_sds_cat (payload , "projects/0123456789/zones/fluent" , 32 )) {
56+ flb_sds_t tmp ;
57+ tmp = flb_sds_cat (* payload , "projects/0123456789/zones/fluent" , 32 );
58+ if (!tmp ) {
5459 return -1 ;
5560 }
61+ * payload = tmp ;
5662 return 0 ;
5763 }
5864 else if (strcmp (uri , FLB_STD_METADATA_INSTANCE_ID_URI ) == 0 ) {
59- if (!flb_sds_cat (payload , "333222111" , 9 )) {
65+ flb_sds_t tmp ;
66+ tmp = flb_sds_cat (* payload , "333222111" , 9 );
67+ if (!tmp ) {
6068 return -1 ;
6169 }
70+ * payload = tmp ;
6271 return 0 ;
6372 }
6473 return -1 ;
@@ -93,8 +102,15 @@ static int fetch_metadata(struct flb_stackdriver *ctx,
93102 /* The request was issued successfully, validate the 'error' field */
94103 flb_plg_debug (ctx -> ins , "HTTP Status=%i" , c -> resp .status );
95104 if (c -> resp .status == 200 ) {
96- ret_code = 0 ;
97- flb_sds_copy (payload , c -> resp .payload , c -> resp .payload_size );
105+ flb_sds_t tmp ;
106+ tmp = flb_sds_copy (* payload , c -> resp .payload , c -> resp .payload_size );
107+ if (!tmp ) {
108+ ret_code = -1 ;
109+ }
110+ else {
111+ * payload = tmp ;
112+ ret_code = 0 ;
113+ }
98114 }
99115 else {
100116 if (c -> resp .payload_size > 0 ) {
@@ -150,7 +166,7 @@ int gce_metadata_read_token(struct flb_stackdriver *ctx)
150166 }
151167 uri = tmp ;
152168
153- ret = fetch_metadata (ctx , ctx -> metadata_u , uri , payload );
169+ ret = fetch_metadata (ctx , ctx -> metadata_u , uri , & payload );
154170 if (ret != 0 ) {
155171 flb_plg_error (ctx -> ins , "can't fetch token from the metadata server" );
156172 flb_sds_destroy (payload );
@@ -180,7 +196,7 @@ int gce_metadata_read_zone(struct flb_stackdriver *ctx)
180196 flb_sds_t zone = NULL ;
181197
182198 ret = fetch_metadata (ctx , ctx -> metadata_u , FLB_STD_METADATA_ZONE_URI ,
183- payload );
199+ & payload );
184200 if (ret != 0 ) {
185201 flb_plg_error (ctx -> ins , "can't fetch zone from the metadata server" );
186202 flb_sds_destroy (payload );
@@ -226,7 +242,7 @@ int gce_metadata_read_project_id(struct flb_stackdriver *ctx)
226242 flb_sds_t payload = flb_sds_create_size (4096 );
227243
228244 ret = fetch_metadata (ctx , ctx -> metadata_u ,
229- FLB_STD_METADATA_PROJECT_ID_URI , payload );
245+ FLB_STD_METADATA_PROJECT_ID_URI , & payload );
230246 if (ret != 0 ) {
231247 flb_plg_error (ctx -> ins , "can't fetch project id from the metadata server" );
232248 flb_sds_destroy (payload );
@@ -243,7 +259,7 @@ int gce_metadata_read_instance_id(struct flb_stackdriver *ctx)
243259 flb_sds_t payload = flb_sds_create_size (4096 );
244260
245261 ret = fetch_metadata (ctx , ctx -> metadata_u ,
246- FLB_STD_METADATA_INSTANCE_ID_URI , payload );
262+ FLB_STD_METADATA_INSTANCE_ID_URI , & payload );
247263 if (ret != 0 ) {
248264 flb_plg_error (ctx -> ins , "can't fetch instance id from the metadata server" );
249265 flb_sds_destroy (payload );
0 commit comments