2626#include <libxml/parser.h>
2727#include <libxml/xmlmemory.h>
2828#include <errno.h>
29+ #include <inttypes.h>
2930
3031#include "ds3.h"
3132#include "ds3_request.h"
4546#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)
4647#endif
4748
49+ //The max size of an uint32_t should be 10 characters + NULL
50+ static const char UNSIGNED_LONG_BASE_10[] = "4294967296";
51+ static const unsigned int UNSIGNED_LONG_BASE_10_STR_LEN = sizeof(UNSIGNED_LONG_BASE_10) + 1;
52+ //The max size of an uint64_t should be 20 characters + NULL
53+ static const char UNSIGNED_LONG_LONG_BASE_10[] = "18446744073709551615";
54+ static const unsigned int UNSIGNED_LONG_LONG_BASE_10_STR_LEN = sizeof(UNSIGNED_LONG_LONG_BASE_10) + 1;
55+
4856static char* _get_ds3_bucket_acl_permission_str(ds3_bucket_acl_permission input) {
4957 if (input == DS3_BUCKET_ACL_PERMISSION_LIST) {
5058 return "LIST";
@@ -1010,9 +1018,6 @@ void ds3_client_free(ds3_client* client) {
10101018}
10111019
10121020
1013- static const char UNSIGNED_LONG_BASE_10[] = "4294967296";
1014- static const unsigned int UNSIGNED_LONG_BASE_10_STR_LEN = sizeof(UNSIGNED_LONG_BASE_10);
1015-
10161021typedef struct {
10171022 char* buff;
10181023 size_t size;
@@ -1150,9 +1155,9 @@ static void _set_query_param_flag(const ds3_request* _request, const char* key,
11501155}
11511156
11521157static void _set_query_param_uint64_t(const ds3_request* _request, const char* key, uint64_t value) {
1153- char string_buffer[UNSIGNED_LONG_BASE_10_STR_LEN ];
1158+ char string_buffer[UNSIGNED_LONG_LONG_BASE_10_STR_LEN ];
11541159 memset(string_buffer, 0, sizeof(string_buffer));
1155- snprintf(string_buffer, sizeof(string_buffer), "%lu" , value);
1160+ snprintf(string_buffer, sizeof(string_buffer), "%"PRIu64 , value);
11561161 _set_query_param(_request, key, string_buffer);
11571162}
11581163
@@ -3579,10 +3584,9 @@ static ds3_error* _get_request_xml_nodes(
35793584 return NULL;
35803585}
35813586
3582- #define LENGTH_BUFF_SIZE 21
35833587
35843588static xmlDocPtr _generate_xml_bulk_objects_list(const ds3_bulk_object_list_response* obj_list, object_list_type list_type, ds3_job_chunk_client_processing_order_guarantee order) {
3585- char size_buff[LENGTH_BUFF_SIZE]; //The max size of an uint64_t should be 20 characters
3589+ char size_buff[UNSIGNED_LONG_LONG_BASE_10_STR_LEN];
35863590 xmlDocPtr doc;
35873591 ds3_bulk_object_response* obj;
35883592 xmlNodePtr objects_node, object_node;
@@ -3598,7 +3602,7 @@ static xmlDocPtr _generate_xml_bulk_objects_list(const ds3_bulk_object_list_resp
35983602
35993603 for (obj_index = 0; obj_index < obj_list->num_objects; obj_index++) {
36003604 obj = obj_list->objects[obj_index];
3601- g_snprintf(size_buff, sizeof(char) * LENGTH_BUFF_SIZE , "%llu", (unsigned long long int) obj->length);
3605+ g_snprintf(size_buff, sizeof(char) * UNSIGNED_LONG_LONG_BASE_10_STR_LEN , "%"PRIu64, obj->length);
36023606
36033607 object_node = xmlNewNode(NULL, (xmlChar*) "Object");
36043608 xmlAddChild(objects_node, object_node);
@@ -3615,7 +3619,7 @@ static xmlDocPtr _generate_xml_bulk_objects_list(const ds3_bulk_object_list_resp
36153619}
36163620
36173621static xmlDocPtr _generate_xml_complete_mpu(const ds3_complete_multipart_upload_response* mpu_list) {
3618- char size_buff[LENGTH_BUFF_SIZE ]; //The max size of an uint64_t should be 20 characters
3622+ char size_buff[UNSIGNED_LONG_LONG_BASE_10_STR_LEN ]; //The max size of an uint64_t should be 20 characters
36193623 xmlDocPtr doc;
36203624 ds3_multipart_upload_part_response* part;
36213625 xmlNodePtr parts_node, part_node;
@@ -3631,7 +3635,7 @@ static xmlDocPtr _generate_xml_complete_mpu(const ds3_complete_multipart_upload_
36313635 part_node = xmlNewNode(NULL, (xmlChar*) "Part");
36323636 xmlAddChild(parts_node, part_node);
36333637
3634- g_snprintf(size_buff, sizeof(char) * LENGTH_BUFF_SIZE , "%d", part->part_number);
3638+ g_snprintf(size_buff, sizeof(char) * UNSIGNED_LONG_LONG_BASE_10_STR_LEN , "%d", part->part_number);
36353639 xmlNewTextChild(part_node, NULL, (xmlChar*) "PartNumber", (xmlChar*) size_buff);
36363640
36373641 xmlNewTextChild(part_node, NULL, (xmlChar*) "ETag", (xmlChar*) part->etag->value);
0 commit comments