diff options
Diffstat (limited to 'src/H5FDs3comms.c')
-rw-r--r-- | src/H5FDs3comms.c | 744 |
1 files changed, 393 insertions, 351 deletions
diff --git a/src/H5FDs3comms.c b/src/H5FDs3comms.c index 4be52c4..378791c 100644 --- a/src/H5FDs3comms.c +++ b/src/H5FDs3comms.c @@ -81,8 +81,8 @@ */ struct s3r_datastruct { unsigned long magic; - char *data; - size_t size; + char * data; + size_t size; }; #define S3COMMS_CALLBACK_DATASTRUCT_MAGIC 0x28c2b2ul @@ -130,9 +130,9 @@ herr_t H5FD_s3comms_s3r_getsize(s3r_t *handle); size_t curlwritecallback(char *ptr, size_t size, size_t nmemb, void *userdata) { - struct s3r_datastruct *sds = (struct s3r_datastruct*) userdata; - size_t product = (size * nmemb); - size_t written = 0; + struct s3r_datastruct *sds = (struct s3r_datastruct *)userdata; + size_t product = (size * nmemb); + size_t written = 0; if (sds->magic != S3COMMS_CALLBACK_DATASTRUCT_MAGIC) return written; @@ -196,16 +196,16 @@ curlwritecallback(char *ptr, size_t size, size_t nmemb, void *userdata) herr_t H5FD_s3comms_hrb_node_set(hrb_node_t **L, const char *name, const char *value) { - size_t i = 0; - char *valuecpy = NULL; - char *namecpy = NULL; - size_t namelen = 0; - char *lowername = NULL; - char *nvcat = NULL; - hrb_node_t *node_ptr = NULL; - hrb_node_t *new_node = NULL; + size_t i = 0; + char * valuecpy = NULL; + char * namecpy = NULL; + size_t namelen = 0; + char * lowername = NULL; + char * nvcat = NULL; + hrb_node_t *node_ptr = NULL; + hrb_node_t *new_node = NULL; hbool_t is_looking = TRUE; - herr_t ret_value = SUCCEED; + herr_t ret_value = SUCCEED; FUNC_ENTER_NOAPI_NOINIT @@ -232,12 +232,12 @@ H5FD_s3comms_hrb_node_set(hrb_node_t **L, const char *name, const char *value) **********************/ /* copy and lowercase name */ - lowername = (char*) H5MM_malloc(sizeof(char) * (namelen + 1)); + lowername = (char *)H5MM_malloc(sizeof(char) * (namelen + 1)); if (lowername == NULL) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot make space for lowercase name copy.\n"); for (i = 0; i < namelen; i++) - lowername[i] = (char) tolower((int) name[i]); + lowername[i] = (char)tolower((int)name[i]); lowername[namelen] = 0; @@ -245,45 +245,44 @@ H5FD_s3comms_hrb_node_set(hrb_node_t **L, const char *name, const char *value) * If NULL, we will be removing a node or doing nothing, so no need for copies */ if (value != NULL) { - int ret = 0; + int ret = 0; size_t valuelen = HDstrlen(value); - size_t catlen = namelen + valuelen + 2; /* +2 from ": " */ - size_t catwrite = catlen + 3; /* 3 not 1 to quiet compiler warning */ + size_t catlen = namelen + valuelen + 2; /* +2 from ": " */ + size_t catwrite = catlen + 3; /* 3 not 1 to quiet compiler warning */ - namecpy = (char*) H5MM_malloc(sizeof(char) * (namelen + 1)); + namecpy = (char *)H5MM_malloc(sizeof(char) * (namelen + 1)); if (namecpy == NULL) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot make space for name copy.\n"); HDmemcpy(namecpy, name, (namelen + 1)); - valuecpy = (char*) H5MM_malloc(sizeof(char) * (valuelen + 1)); + valuecpy = (char *)H5MM_malloc(sizeof(char) * (valuelen + 1)); if (valuecpy == NULL) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot make space for value copy.\n"); HDmemcpy(valuecpy, value, (valuelen + 1)); - nvcat = (char*) H5MM_malloc(sizeof(char) * catwrite); + nvcat = (char *)H5MM_malloc(sizeof(char) * catwrite); if (nvcat == NULL) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot make space for concatenated string.\n"); ret = HDsnprintf(nvcat, catwrite, "%s: %s", name, value); - if (ret < 0 || (size_t) ret > catlen) + if (ret < 0 || (size_t)ret > catlen) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "cannot concatenate `%s: %s", name, value); HDassert(catlen == HDstrlen(nvcat)); /* create new_node, should we need it */ - new_node = (hrb_node_t*) H5MM_malloc(sizeof(hrb_node_t)); + new_node = (hrb_node_t *)H5MM_malloc(sizeof(hrb_node_t)); if (new_node == NULL) HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "cannot make space for new set.\n"); - - new_node->magic = S3COMMS_HRB_NODE_MAGIC; - new_node->name = NULL; - new_node->value = NULL; - new_node->cat = NULL; + new_node->magic = S3COMMS_HRB_NODE_MAGIC; + new_node->name = NULL; + new_node->value = NULL; + new_node->cat = NULL; new_node->lowername = NULL; - new_node->next = NULL; + new_node->next = NULL; } /*************** @@ -296,16 +295,17 @@ H5FD_s3comms_hrb_node_set(hrb_node_t **L, const char *name, const char *value) } else { #if S3COMMS_DEBUG -HDprintf("CREATE NEW\n"); fflush(stdout); + HDprintf("CREATE NEW\n"); + fflush(stdout); #endif /******************* * CREATE NEW LIST * *******************/ - new_node->cat = nvcat; - new_node->name = namecpy; + new_node->cat = nvcat; + new_node->name = namecpy; new_node->lowername = lowername; - new_node->value = valuecpy; + new_node->value = valuecpy; *L = new_node; goto done; /* bypass further seeking */ @@ -323,7 +323,8 @@ HDprintf("CREATE NEW\n"); fflush(stdout); if (value == NULL) { #if S3COMMS_DEBUG -HDprintf("REMOVE HEAD\n"); fflush(stdout); + HDprintf("REMOVE HEAD\n"); + fflush(stdout); #endif /*************** * REMOVE HEAD * @@ -331,42 +332,48 @@ HDprintf("REMOVE HEAD\n"); fflush(stdout); *L = node_ptr->next; #if S3COMMS_DEBUG -HDprintf("FREEING CAT (node)\n"); fflush(stdout); + HDprintf("FREEING CAT (node)\n"); + fflush(stdout); #endif H5MM_xfree(node_ptr->cat); #if S3COMMS_DEBUG -HDprintf("FREEING LOWERNAME (node)\n"); fflush(stdout); + HDprintf("FREEING LOWERNAME (node)\n"); + fflush(stdout); #endif H5MM_xfree(node_ptr->lowername); #if S3COMMS_DEBUG -HDprintf("FREEING NAME (node)\n"); fflush(stdout); + HDprintf("FREEING NAME (node)\n"); + fflush(stdout); #endif H5MM_xfree(node_ptr->name); #if S3COMMS_DEBUG -HDprintf("FREEING VALUE (node)\n"); fflush(stdout); + HDprintf("FREEING VALUE (node)\n"); + fflush(stdout); #endif H5MM_xfree(node_ptr->value); #if S3COMMS_DEBUG -HDprintf("MAGIC OK? %s\n", - (node_ptr->magic == S3COMMS_HRB_NODE_MAGIC) ? "YES" : "NO"); -fflush(stdout); + HDprintf("MAGIC OK? %s\n", (node_ptr->magic == S3COMMS_HRB_NODE_MAGIC) ? "YES" : "NO"); + fflush(stdout); #endif HDassert(node_ptr->magic == S3COMMS_HRB_NODE_MAGIC); node_ptr->magic += 1ul; #if S3COMMS_DEBUG -HDprintf("FREEING POINTER\n"); fflush(stdout); + HDprintf("FREEING POINTER\n"); + fflush(stdout); #endif H5MM_xfree(node_ptr); #if S3COMMS_DEBUG -HDprintf("FREEING WORKING LOWERNAME\n"); fflush(stdout); + HDprintf("FREEING WORKING LOWERNAME\n"); + fflush(stdout); #endif H5MM_xfree(lowername); lowername = NULL; } else { #if S3COMMS_DEBUG -HDprintf("MODIFY HEAD\n"); fflush(stdout); + HDprintf("MODIFY HEAD\n"); + fflush(stdout); #endif /*************** * MODIFY HEAD * @@ -376,9 +383,9 @@ HDprintf("MODIFY HEAD\n"); fflush(stdout); H5MM_xfree(node_ptr->name); H5MM_xfree(node_ptr->value); - node_ptr->name = namecpy; + node_ptr->name = namecpy; node_ptr->value = valuecpy; - node_ptr->cat = nvcat; + node_ptr->cat = nvcat; H5MM_xfree(lowername); lowername = NULL; @@ -395,17 +402,18 @@ HDprintf("MODIFY HEAD\n"); fflush(stdout); } else { #if S3COMMS_DEBUG -HDprintf("PREPEND NEW HEAD\n"); fflush(stdout); + HDprintf("PREPEND NEW HEAD\n"); + fflush(stdout); #endif /******************* * INSERT NEW HEAD * *******************/ - new_node->name = namecpy; - new_node->value = valuecpy; + new_node->name = namecpy; + new_node->value = valuecpy; new_node->lowername = lowername; - new_node->cat = nvcat; - new_node->next = node_ptr; - *L = new_node; + new_node->cat = nvcat; + new_node->next = node_ptr; + *L = new_node; } } @@ -422,17 +430,18 @@ HDprintf("PREPEND NEW HEAD\n"); fflush(stdout); } else { #if S3COMMS_DEBUG -HDprintf("APPEND A NODE\n"); fflush(stdout); + HDprintf("APPEND A NODE\n"); + fflush(stdout); #endif /******************* * APPEND NEW NODE * *******************/ HDassert(strcmp(lowername, node_ptr->lowername) > 0); - new_node->name = namecpy; - new_node->value = valuecpy; + new_node->name = namecpy; + new_node->value = valuecpy; new_node->lowername = lowername; - new_node->cat = nvcat; - node_ptr->next = new_node; + new_node->cat = nvcat; + node_ptr->next = new_node; } } else if (strcmp(lowername, node_ptr->next->lowername) < 0) { @@ -443,18 +452,19 @@ HDprintf("APPEND A NODE\n"); fflush(stdout); } else { #if S3COMMS_DEBUG -HDprintf("INSERT A NODE\n"); fflush(stdout); + HDprintf("INSERT A NODE\n"); + fflush(stdout); #endif /******************* * INSERT NEW NODE * *******************/ HDassert(strcmp(lowername, node_ptr->lowername) > 0); - new_node->name = namecpy; - new_node->value = valuecpy; + new_node->name = namecpy; + new_node->value = valuecpy; new_node->lowername = lowername; - new_node->cat = nvcat; - new_node->next = node_ptr->next; - node_ptr->next = new_node; + new_node->cat = nvcat; + new_node->next = node_ptr->next; + node_ptr->next = new_node; } } else if (strcmp(lowername, node_ptr->next->lowername) == 0) { @@ -462,13 +472,14 @@ HDprintf("INSERT A NODE\n"); fflush(stdout); if (value == NULL) { /***************** - * REMOVE A NODE * - *****************/ + * REMOVE A NODE * + *****************/ hrb_node_t *tmp = node_ptr->next; - node_ptr->next = tmp->next; + node_ptr->next = tmp->next; #if S3COMMS_DEBUG -HDprintf("REMOVE A NODE\n"); fflush(stdout); + HDprintf("REMOVE A NODE\n"); + fflush(stdout); #endif H5MM_xfree(tmp->cat); H5MM_xfree(tmp->lowername); @@ -484,7 +495,8 @@ HDprintf("REMOVE A NODE\n"); fflush(stdout); } else { #if S3COMMS_DEBUG -HDprintf("MODIFY A NODE\n"); fflush(stdout); + HDprintf("MODIFY A NODE\n"); + fflush(stdout); #endif /***************** * MODIFY A NODE * @@ -498,12 +510,12 @@ HDprintf("MODIFY A NODE\n"); fflush(stdout); new_node->magic += 1ul; H5MM_xfree(new_node); H5MM_xfree(lowername); - new_node = NULL; + new_node = NULL; lowername = NULL; - node_ptr->name = namecpy; + node_ptr->name = namecpy; node_ptr->value = valuecpy; - node_ptr->cat = nvcat; + node_ptr->cat = nvcat; } } else { @@ -573,7 +585,7 @@ done: herr_t H5FD_s3comms_hrb_destroy(hrb_t **_buf) { - hrb_t *buf = NULL; + hrb_t *buf = NULL; herr_t ret_value = SUCCEED; FUNC_ENTER_NOAPI_NOINIT @@ -624,17 +636,17 @@ done: * 2017-07-21 *---------------------------------------------------------------------------- */ -hrb_t* +hrb_t * H5FD_s3comms_hrb_init_request(const char *_verb, const char *_resource, const char *_http_version) { - hrb_t *request = NULL; - char *res = NULL; - size_t reslen = 0; + hrb_t *request = NULL; + char * res = NULL; + size_t reslen = 0; hrb_t *ret_value = NULL; - char *verb = NULL; - size_t verblen = 0; - char *vrsn = NULL; - size_t vrsnlen = 0; + char * verb = NULL; + size_t verblen = 0; + char * vrsn = NULL; + size_t vrsnlen = 0; FUNC_ENTER_NOAPI_NOINIT @@ -653,45 +665,45 @@ H5FD_s3comms_hrb_init_request(const char *_verb, const char *_resource, const ch _http_version = "HTTP/1.1"; /* malloc space for and prepare structure */ - request = (hrb_t*) H5MM_malloc(sizeof(hrb_t)); + request = (hrb_t *)H5MM_malloc(sizeof(hrb_t)); if (request == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, NULL, "no space for request structure"); - request->magic = S3COMMS_HRB_MAGIC; - request->body = NULL; - request->body_len = 0; + request->magic = S3COMMS_HRB_MAGIC; + request->body = NULL; + request->body_len = 0; request->first_header = NULL; /* malloc and copy strings for the structure - */ + */ reslen = HDstrlen(_resource); if (_resource[0] == '/') { - res = (char*) H5MM_malloc(sizeof(char) * (reslen + 1)); + res = (char *)H5MM_malloc(sizeof(char) * (reslen + 1)); if (res == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, NULL, "no space for resource string"); HDmemcpy(res, _resource, (reslen + 1)); } else { - res = (char*) H5MM_malloc(sizeof(char) * (reslen + 2)); + res = (char *)H5MM_malloc(sizeof(char) * (reslen + 2)); if (res == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, NULL, "no space for resource string"); *res = '/'; HDmemcpy((&res[1]), _resource, (reslen + 1)); - HDassert((reslen+1) == HDstrlen(res)); + HDassert((reslen + 1) == HDstrlen(res)); } /* end if (else resource string not starting with '/') */ verblen = HDstrlen(_verb) + 1; - verb = (char*) H5MM_malloc(sizeof(char) * verblen); + verb = (char *)H5MM_malloc(sizeof(char) * verblen); if (verb == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "no space for verb string"); HDstrncpy(verb, _verb, verblen); vrsnlen = HDstrlen(_http_version) + 1; - vrsn = (char*) H5MM_malloc(sizeof(char) * vrsnlen); + vrsn = (char *)H5MM_malloc(sizeof(char) * vrsnlen); if (vrsn == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "no space for http-version string"); @@ -699,8 +711,8 @@ H5FD_s3comms_hrb_init_request(const char *_verb, const char *_resource, const ch /* place new copies into structure */ request->resource = res; - request->verb = verb; - request->version = vrsn; + request->verb = verb; + request->version = vrsn; ret_value = request; @@ -834,15 +846,13 @@ H5FD_s3comms_s3r_get_filesize(s3r_t *handle) herr_t H5FD_s3comms_s3r_getsize(s3r_t *handle) { - uintmax_t content_length = 0; - CURL *curlh = NULL; - char *end = NULL; - char *headerresponse = NULL; - char *start = NULL; - herr_t ret_value = SUCCEED; - struct s3r_datastruct sds = { - S3COMMS_CALLBACK_DATASTRUCT_MAGIC, NULL, 0 - }; + uintmax_t content_length = 0; + CURL * curlh = NULL; + char * end = NULL; + char * headerresponse = NULL; + char * start = NULL; + herr_t ret_value = SUCCEED; + struct s3r_datastruct sds = {S3COMMS_CALLBACK_DATASTRUCT_MAGIC, NULL, 0}; FUNC_ENTER_NOAPI_NOINIT @@ -866,21 +876,23 @@ H5FD_s3comms_s3r_getsize(s3r_t *handle) curlh = handle->curlhandle; if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_NOBODY, 1L)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while setting CURL option (CURLOPT_NOBODY). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "error while setting CURL option (CURLOPT_NOBODY). " + "(placeholder flags)"); if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_HEADERDATA, &sds)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while setting CURL option (CURLOPT_HEADERDATA). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "error while setting CURL option (CURLOPT_HEADERDATA). " + "(placeholder flags)"); HDassert(handle->httpverb == NULL); - handle->httpverb = (char*) H5MM_malloc(sizeof(char) * 16); + handle->httpverb = (char *)H5MM_malloc(sizeof(char) * 16); if (handle->httpverb == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "unable to allocate space for S3 request HTTP verb"); HDmemcpy(handle->httpverb, "HEAD", 5); - headerresponse = (char*) H5MM_malloc(sizeof(char) * CURL_MAX_HTTP_HEADER); + headerresponse = (char *)H5MM_malloc(sizeof(char) * CURL_MAX_HTTP_HEADER); if (headerresponse == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "unable to allocate space for curl header response"); @@ -918,38 +930,41 @@ H5FD_s3comms_s3r_getsize(s3r_t *handle) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not find \"Content-Length\" in response.\n"); /* move "start" to beginning of value in line; find end of line - */ + */ start = start + HDstrlen("\r\nContent-Length: "); - end = strstr(start, "\r\n"); + end = strstr(start, "\r\n"); if (end == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not find end of content length line"); /* place null terminator at end of numbers */ *end = '\0'; - content_length = strtoumax((const char*) start, NULL, 0); + content_length = strtoumax((const char *)start, NULL, 0); if (UINTMAX_MAX > SIZE_MAX && content_length > SIZE_MAX) HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "content_length overflows size_t\n"); if (content_length == 0 || errno == ERANGE) /* errno set by strtoumax*/ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, - "could not convert found \"Content-Length\" response (\"%s\")", start); /* range is null-terminated, remember */ + "could not convert found \"Content-Length\" response (\"%s\")", + start); /* range is null-terminated, remember */ - handle->filesize = (size_t) content_length; + handle->filesize = (size_t)content_length; /********************** - * UNDO HEAD SETTINGS * - **********************/ + * UNDO HEAD SETTINGS * + **********************/ if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_NOBODY, NULL)) { - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while setting CURL option (CURLOPT_NOBODY). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "error while setting CURL option (CURLOPT_NOBODY). " + "(placeholder flags)"); } if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_HEADERDATA, NULL)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while setting CURL option (CURLOPT_HEADERDATA). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "error while setting CURL option (CURLOPT_HEADERDATA). " + "(placeholder flags)"); done: H5MM_xfree(headerresponse); @@ -992,14 +1007,14 @@ done: * 2017-09-01 *---------------------------------------------------------------------------- */ -s3r_t* +s3r_t * H5FD_s3comms_s3r_open(const char *url, const char *region, const char *id, const unsigned char *signing_key) { - size_t tmplen = 0; - CURL *curlh = NULL; - s3r_t *handle = NULL; - parsed_url_t *purl = NULL; - s3r_t *ret_value = NULL; + size_t tmplen = 0; + CURL * curlh = NULL; + s3r_t * handle = NULL; + parsed_url_t *purl = NULL; + s3r_t * ret_value = NULL; FUNC_ENTER_NOAPI_NOINIT @@ -1017,25 +1032,23 @@ H5FD_s3comms_s3r_open(const char *url, const char *region, const char *id, const HDassert(purl != NULL); /* if above passes, this must be true */ HDassert(purl->magic == S3COMMS_PARSED_URL_MAGIC); - handle = (s3r_t*) H5MM_malloc(sizeof(s3r_t)); + handle = (s3r_t *)H5MM_malloc(sizeof(s3r_t)); if (handle == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, NULL, "could not malloc space for handle.\n"); - handle->magic = S3COMMS_S3R_MAGIC; - handle->purl = purl; - handle->filesize = 0; - handle->region = NULL; - handle->secret_id = NULL; + handle->magic = S3COMMS_S3R_MAGIC; + handle->purl = purl; + handle->filesize = 0; + handle->region = NULL; + handle->secret_id = NULL; handle->signing_key = NULL; - handle->httpverb = NULL; + handle->httpverb = NULL; /************************************* * RECORD AUTHENTICATION INFORMATION * *************************************/ - if ((region != NULL && *region != '\0') || - (id != NULL && *id != '\0') || - (signing_key != NULL)) { + if ((region != NULL && *region != '\0') || (id != NULL && *id != '\0') || (signing_key != NULL)) { /* if one exists, all three must exist */ if (region == NULL || region[0] == '\0') HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "region cannot be null.\n"); @@ -1047,22 +1060,22 @@ H5FD_s3comms_s3r_open(const char *url, const char *region, const char *id, const HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "signing key cannot be null.\n"); /* copy strings */ - tmplen = HDstrlen(region) + 1; - handle->region = (char*) H5MM_malloc(sizeof(char) * tmplen); + tmplen = HDstrlen(region) + 1; + handle->region = (char *)H5MM_malloc(sizeof(char) * tmplen); if (handle->region == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "could not malloc space for handle region copy.\n"); HDmemcpy(handle->region, region, tmplen); - tmplen = HDstrlen(id) + 1; - handle->secret_id = (char*) H5MM_malloc(sizeof(char) * tmplen); + tmplen = HDstrlen(id) + 1; + handle->secret_id = (char *)H5MM_malloc(sizeof(char) * tmplen); if (handle->secret_id == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "could not malloc space for handle ID copy.\n"); HDmemcpy(handle->secret_id, id, tmplen); - tmplen = SHA256_DIGEST_LENGTH; - handle->signing_key = (unsigned char*) H5MM_malloc(sizeof(unsigned char) * tmplen); + tmplen = SHA256_DIGEST_LENGTH; + handle->signing_key = (unsigned char *)H5MM_malloc(sizeof(unsigned char) * tmplen); if (handle->signing_key == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "could not malloc space for handle key copy.\n"); @@ -1079,24 +1092,29 @@ H5FD_s3comms_s3r_open(const char *url, const char *region, const char *id, const HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "problem creating curl easy handle!\n"); if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_HTTPGET, 1L)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "error while setting CURL option (CURLOPT_HTTPGET). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, + "error while setting CURL option (CURLOPT_HTTPGET). " + "(placeholder flags)"); if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "error while setting CURL option (CURLOPT_HTTP_VERSION). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, + "error while setting CURL option (CURLOPT_HTTP_VERSION). " + "(placeholder flags)"); if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_FAILONERROR, 1L)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "error while setting CURL option (CURLOPT_FAILONERROR). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, + "error while setting CURL option (CURLOPT_FAILONERROR). " + "(placeholder flags)"); if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_WRITEFUNCTION, curlwritecallback)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "error while setting CURL option (CURLOPT_WRITEFUNCTION). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, + "error while setting CURL option (CURLOPT_WRITEFUNCTION). " + "(placeholder flags)"); if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_URL, url)) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "error while setting CURL option (CURLOPT_URL). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, + "error while setting CURL option (CURLOPT_URL). " + "(placeholder flags)"); #if S3COMMS_CURL_VERBOSITY > 1 /* CURL will print (to stdout) information for each operation @@ -1186,18 +1204,18 @@ done: herr_t H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) { - CURL *curlh = NULL; - CURLcode p_status = CURLE_OK; - struct curl_slist *curlheaders = NULL; - hrb_node_t *headers = NULL; - hrb_node_t *node = NULL; - struct tm *now = NULL; - char *rangebytesstr = NULL; - hrb_t *request = NULL; - int ret = 0; /* working variable to check */ + CURL * curlh = NULL; + CURLcode p_status = CURLE_OK; + struct curl_slist *curlheaders = NULL; + hrb_node_t * headers = NULL; + hrb_node_t * node = NULL; + struct tm * now = NULL; + char * rangebytesstr = NULL; + hrb_t * request = NULL; + int ret = 0; /* working variable to check */ /* return value of HDsnprintf */ - struct s3r_datastruct *sds = NULL; - herr_t ret_value = SUCCEED; + struct s3r_datastruct *sds = NULL; + herr_t ret_value = SUCCEED; FUNC_ENTER_NOAPI_NOINIT @@ -1205,9 +1223,9 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) HDfprintf(stdout, "called H5FD_s3comms_s3r_read.\n"); #endif -/************************************** - * ABSOLUTELY NECESSARY SANITY-CHECKS * - **************************************/ + /************************************** + * ABSOLUTELY NECESSARY SANITY-CHECKS * + **************************************/ if (handle == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "handle cannot be null.\n"); @@ -1225,7 +1243,6 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) if (offset > handle->filesize || (len + offset) > handle->filesize) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to read past EoF") - curlh = handle->curlhandle; /********************* @@ -1233,17 +1250,17 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) *********************/ if (dest != NULL) { - sds = (struct s3r_datastruct*) H5MM_malloc(sizeof(struct s3r_datastruct)); + sds = (struct s3r_datastruct *)H5MM_malloc(sizeof(struct s3r_datastruct)); if (sds == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "could not malloc destination datastructure.\n"); - sds->magic = S3COMMS_CALLBACK_DATASTRUCT_MAGIC; - sds->data = (char*) dest; - sds->size = 0; + sds->data = (char *)dest; + sds->size = 0; if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_WRITEDATA, sds)) - HGOTO_ERROR(H5E_ARGS, H5E_UNINITIALIZED, FAIL, "error while setting CURL option (CURLOPT_WRITEDATA). " - "(placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_UNINITIALIZED, FAIL, + "error while setting CURL option (CURLOPT_WRITEDATA). " + "(placeholder flags)"); } /********************* @@ -1251,22 +1268,22 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) *********************/ if (len > 0) { - rangebytesstr = (char*) H5MM_malloc(sizeof(char) * (S3COMMS_MAX_RANGE_STRING_SIZE + 1)); + rangebytesstr = (char *)H5MM_malloc(sizeof(char) * (S3COMMS_MAX_RANGE_STRING_SIZE + 1)); if (rangebytesstr == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "could not malloc range format string.\n"); ret = HDsnprintf(rangebytesstr, (S3COMMS_MAX_RANGE_STRING_SIZE), - "bytes="H5_PRINTF_HADDR_FMT"-"H5_PRINTF_HADDR_FMT, offset, offset + len - 1); + "bytes=" H5_PRINTF_HADDR_FMT "-" H5_PRINTF_HADDR_FMT, offset, offset + len - 1); if (ret <= 0 || ret >= S3COMMS_MAX_RANGE_STRING_SIZE) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to format HTTP Range value"); } else if (offset > 0) { - rangebytesstr = (char*) H5MM_malloc(sizeof(char) * (S3COMMS_MAX_RANGE_STRING_SIZE + 1)); + rangebytesstr = (char *)H5MM_malloc(sizeof(char) * (S3COMMS_MAX_RANGE_STRING_SIZE + 1)); if (rangebytesstr == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "could not malloc range format string.\n"); - ret = HDsnprintf(rangebytesstr, (S3COMMS_MAX_RANGE_STRING_SIZE), "bytes="H5_PRINTF_HADDR_FMT"-", - offset); + ret = HDsnprintf(rangebytesstr, (S3COMMS_MAX_RANGE_STRING_SIZE), "bytes=" H5_PRINTF_HADDR_FMT "-", + offset); if (ret <= 0 || ret >= S3COMMS_MAX_RANGE_STRING_SIZE) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to format HTTP Range value"); } @@ -1288,7 +1305,7 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) if (CURLE_OK != curl_easy_setopt(curlh, CURLOPT_RANGE, bytesrange_ptr)) HGOTO_ERROR(H5E_VFL, H5E_UNINITIALIZED, FAIL, - "error while setting CURL option (CURLOPT_RANGE). "); + "error while setting CURL option (CURLOPT_RANGE). "); } } else { @@ -1313,10 +1330,10 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) */ /* zero start of strings */ - authorization[0] = 0; - buffer1[0] = 0; - buffer2[0] = 0; - iso8601now[0] = 0; + authorization[0] = 0; + buffer1[0] = 0; + buffer2[0] = 0; + iso8601now[0] = 0; signed_headers[0] = 0; /**** VERIFY INFORMATION EXISTS ****/ @@ -1340,7 +1357,8 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) /**** CREATE HTTP REQUEST STRUCTURE (hrb_t) ****/ - request = H5FD_s3comms_hrb_init_request((const char*) handle->httpverb, (const char*) handle->purl->path, "HTTP/1.1"); + request = H5FD_s3comms_hrb_init_request((const char *)handle->httpverb, + (const char *)handle->purl->path, "HTTP/1.1"); if (request == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not allocate hrb_t request.\n"); @@ -1350,41 +1368,45 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) if (ISO8601NOW(iso8601now, now) != (ISO8601_SIZE - 1)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not format ISO8601 time.\n"); - if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "x-amz-date", (const char*) iso8601now)) + if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "x-amz-date", (const char *)iso8601now)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to set x-amz-date header") if (headers == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem building headers list. " - "(placeholder flags)\n"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "problem building headers list. " + "(placeholder flags)\n"); HDassert(headers->magic == S3COMMS_HRB_NODE_MAGIC); - if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "x-amz-content-sha256", (const char*) EMPTY_SHA256)) + if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "x-amz-content-sha256", (const char *)EMPTY_SHA256)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to set x-amz-content-sha256 header") if (headers == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem building headers list. " - "(placeholder flags)\n"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "problem building headers list. " + "(placeholder flags)\n"); HDassert(headers->magic == S3COMMS_HRB_NODE_MAGIC); if (rangebytesstr != NULL) { - if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "Range", (const char*) rangebytesstr)) + if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "Range", (const char *)rangebytesstr)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to set range header") if (headers == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem building headers list. " - "(placeholder flags)\n"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "problem building headers list. " + "(placeholder flags)\n"); HDassert(headers->magic == S3COMMS_HRB_NODE_MAGIC); } - if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "Host", (const char*) handle->purl->host)) + if (FAIL == H5FD_s3comms_hrb_node_set(&headers, "Host", (const char *)handle->purl->host)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to set host header") if (headers == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem building headers list. " - "(placeholder flags)\n"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "problem building headers list. " + "(placeholder flags)\n"); HDassert(headers->magic == S3COMMS_HRB_NODE_MAGIC); @@ -1399,7 +1421,8 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "(placeholder flags)\n"); /* buffer1 -> signature */ - if (FAIL == H5FD_s3comms_HMAC_SHA256(handle->signing_key, SHA256_DIGEST_LENGTH, buffer2, HDstrlen(buffer2), buffer1)) + if (FAIL == H5FD_s3comms_HMAC_SHA256(handle->signing_key, SHA256_DIGEST_LENGTH, buffer2, + HDstrlen(buffer2), buffer1)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "(placeholder flags)\n"); iso8601now[8] = 0; /* trim to yyyyMMDD */ @@ -1408,21 +1431,22 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to format aws4 credential string"); ret = HDsnprintf(authorization, 512, "AWS4-HMAC-SHA256 Credential=%s,SignedHeaders=%s,Signature=%s", - buffer2, signed_headers, buffer1); + buffer2, signed_headers, buffer1); if (ret <= 0 || ret >= 512) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to format aws4 authorization string"); /* append authorization header to http request buffer - */ - if (H5FD_s3comms_hrb_node_set(&headers, "Authorization", (const char*) authorization) == FAIL) + */ + if (H5FD_s3comms_hrb_node_set(&headers, "Authorization", (const char *)authorization) == FAIL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to set Authorization header") if (headers == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem building headers list. " - "(placeholder flags)\n"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "problem building headers list. " + "(placeholder flags)\n"); /* update hrb's "first header" pointer - */ + */ request->first_header = headers; /**** SET CURLHANDLE HTTP HEADERS FROM GENERATED DATA ****/ @@ -1430,10 +1454,11 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) node = request->first_header; while (node != NULL) { HDassert(node->magic == S3COMMS_HRB_NODE_MAGIC); - curlheaders = curl_slist_append(curlheaders, (const char*) node->cat); + curlheaders = curl_slist_append(curlheaders, (const char *)node->cat); if (curlheaders == NULL) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not append header to curl slist. " - "(placeholder flags)\n"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "could not append header to curl slist. " + "(placeholder flags)\n"); node = node->next; } @@ -1444,10 +1469,11 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "curlheaders was never populated.\n"); /* finally, set http headers in curl handle - */ + */ if (curl_easy_setopt(curlh, CURLOPT_HTTPHEADER, curlheaders) != CURLE_OK) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "error while setting CURL option " - "(CURLOPT_HTTPHEADER). (placeholder flags)"); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "error while setting CURL option " + "(CURLOPT_HTTPHEADER). (placeholder flags)"); } /* end if should authenticate (info provided) */ @@ -1481,10 +1507,10 @@ H5FD_s3comms_s3r_read(s3r_t *handle, haddr_t offset, size_t len, void *dest) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem unsetting error buffer") } /* verbose error reporting */ #else - p_status = curl_easy_perform(curlh); + p_status = curl_easy_perform(curlh); - if (p_status != CURLE_OK) - HGOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, FAIL, "curl cannot perform request\n") + if (p_status != CURLE_OK) + HGOTO_ERROR(H5E_VFL, H5E_CANTOPENFILE, FAIL, "curl cannot perform request\n") #endif #if S3COMMS_DEBUG @@ -1562,11 +1588,11 @@ done: * 2017-07-12 *---------------------------------------------------------------------------- */ -struct tm* +struct tm * gmnow(void) { time_t now; - time_t *now_ptr = &now; + time_t * now_ptr = &now; struct tm *ret_value = NULL; /* Doctor assert, checks against error in time() */ @@ -1614,16 +1640,16 @@ gmnow(void) */ herr_t H5FD_s3comms_aws_canonical_request(char *canonical_request_dest, int _cr_size, char *signed_headers_dest, - int _sh_size, hrb_t *http_request) + int _sh_size, hrb_t *http_request) { - hrb_node_t *node = NULL; + hrb_node_t *node = NULL; const char *query_params = ""; /* unused at present */ - herr_t ret_value = SUCCEED; - int ret = 0; - size_t cr_size = (size_t) _cr_size; - size_t sh_size = (size_t) _sh_size; - size_t cr_len = 0; /* working length of canonical request str */ - size_t sh_len = 0; /* working length of signed headers str */ + herr_t ret_value = SUCCEED; + int ret = 0; + size_t cr_size = (size_t)_cr_size; + size_t sh_size = (size_t)_sh_size; + size_t cr_len = 0; /* working length of canonical request str */ + size_t sh_len = 0; /* working length of signed headers str */ char tmpstr[256 + 1]; tmpstr[256] = 0; /* terminating NULL */ @@ -1656,19 +1682,20 @@ H5FD_s3comms_aws_canonical_request(char *canonical_request_dest, int _cr_size, c HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "signed headers destination cannot be null.\n"); /* HTTP verb, resource path, and query string lines - */ - cr_len = (HDstrlen(http_request->verb) + HDstrlen(http_request->resource) + HDstrlen(query_params) - + (size_t) 3); /* three newline chars */ + */ + cr_len = (HDstrlen(http_request->verb) + HDstrlen(http_request->resource) + HDstrlen(query_params) + + (size_t)3); /* three newline chars */ if (cr_len >= cr_size) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not enough space in canonical request"); - ret = HDsnprintf( /* TODO: compiler warning */ - canonical_request_dest, (cr_size - 1), "%s\n%s\n%s\n", http_request->verb, http_request->resource, query_params); - if (ret < 0 || (size_t) ret >= cr_size) + ret = HDsnprintf(/* TODO: compiler warning */ + canonical_request_dest, (cr_size - 1), "%s\n%s\n%s\n", http_request->verb, + http_request->resource, query_params); + if (ret < 0 || (size_t)ret >= cr_size) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to compose canonical request first line"); /* write in canonical headers, building signed headers concurrently - */ + */ node = http_request->first_header; /* assumed sorted */ while (node != NULL) { HDassert(node->magic == S3COMMS_HRB_NODE_MAGIC); @@ -1676,7 +1703,7 @@ H5FD_s3comms_aws_canonical_request(char *canonical_request_dest, int _cr_size, c ret = HDsnprintf(tmpstr, 256, "%s:%s\n", node->lowername, node->value); if (ret < 0 || ret >= 256) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to concatenate HTTP header %s:%s", - node->lowername, node->value); + node->lowername, node->value); cr_len += HDstrlen(tmpstr); if (cr_len + 1 > cr_size) @@ -1686,7 +1713,8 @@ H5FD_s3comms_aws_canonical_request(char *canonical_request_dest, int _cr_size, c ret = HDsnprintf(tmpstr, 256, "%s;", node->lowername); if (ret < 0 || ret >= 256) - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to append semicolon to lowername %s", node->lowername); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to append semicolon to lowername %s", + node->lowername); sh_len += HDstrlen(tmpstr); if (sh_len + 1 > sh_size) @@ -1743,7 +1771,7 @@ done: herr_t H5FD_s3comms_bytes_to_hex(char *dest, const unsigned char *msg, size_t msg_len, hbool_t lowercase) { - size_t i = 0; + size_t i = 0; herr_t ret_value = SUCCEED; FUNC_ENTER_NOAPI_NOINIT @@ -1760,7 +1788,7 @@ H5FD_s3comms_bytes_to_hex(char *dest, const unsigned char *msg, size_t msg_len, for (i = 0; i < msg_len; i++) { int chars_written = HDsnprintf(&(dest[i * 2]), 3, /* 'X', 'X', '\n' */ - (lowercase == TRUE) ? "%02x" : "%02X", msg[i]); + (lowercase == TRUE) ? "%02x" : "%02X", msg[i]); if (chars_written != 2) { HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem while writing hex chars for %c", msg[i]); } @@ -1845,10 +1873,11 @@ H5FD_s3comms_free_purl(parsed_url_t *purl) *---------------------------------------------------------------------------- */ herr_t -H5FD_s3comms_HMAC_SHA256(const unsigned char *key, size_t key_len, const char *msg, size_t msg_len, char *dest) +H5FD_s3comms_HMAC_SHA256(const unsigned char *key, size_t key_len, const char *msg, size_t msg_len, + char *dest) { unsigned char md[SHA256_DIGEST_LENGTH]; - unsigned int md_len = SHA256_DIGEST_LENGTH; + unsigned int md_len = SHA256_DIGEST_LENGTH; herr_t ret_value = SUCCEED; FUNC_ENTER_NOAPI_NOINIT @@ -1860,9 +1889,9 @@ H5FD_s3comms_HMAC_SHA256(const unsigned char *key, size_t key_len, const char *m if (dest == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "destination cannot be null."); - HMAC(EVP_sha256(), key, (int) key_len, (const unsigned char*) msg, msg_len, md, &md_len); + HMAC(EVP_sha256(), key, (int)key_len, (const unsigned char *)msg, msg_len, md, &md_len); - if (H5FD_s3comms_bytes_to_hex(dest, (const unsigned char*) md, (size_t) md_len, TRUE) == FAIL) + if (H5FD_s3comms_bytes_to_hex(dest, (const unsigned char *)md, (size_t)md_len, TRUE) == FAIL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not convert to hex string."); done: @@ -1915,19 +1944,27 @@ done: *----------------------------------------------------------------------------- */ static herr_t -H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, char *key_id, - char *access_key, char *aws_region) +H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, char *key_id, char *access_key, + char *aws_region) { char profile_line[32]; char buffer[128]; - const char *setting_names[] = { "region", "aws_access_key_id", "aws_secret_access_key", }; - char *const setting_pointers[] = { aws_region, key_id, access_key, }; - unsigned setting_count = 3; - herr_t ret_value = SUCCEED; - unsigned buffer_i = 0; - unsigned setting_i = 0; - int found_setting = 0; - char *line_buffer = &(buffer[0]); + const char *setting_names[] = { + "region", + "aws_access_key_id", + "aws_secret_access_key", + }; + char *const setting_pointers[] = { + aws_region, + key_id, + access_key, + }; + unsigned setting_count = 3; + herr_t ret_value = SUCCEED; + unsigned buffer_i = 0; + unsigned setting_i = 0; + int found_setting = 0; + char * line_buffer = &(buffer[0]); FUNC_ENTER_NOAPI_NOINIT @@ -1935,7 +1972,7 @@ H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, cha HDfprintf(stdout, "called load_aws_creds_from_file.\n"); #endif -/* format target line for start of profile */ + /* format target line for start of profile */ if (32 < HDsnprintf(profile_line, 32, "[%s]", profile_name)) HGOTO_ERROR(H5E_ARGS, H5E_CANTCOPY, FAIL, "unable to format profile label"); @@ -1968,11 +2005,11 @@ H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, cha /* loop over names to see if line looks like assignment */ for (setting_i = 0; setting_i < setting_count; setting_i++) { - size_t setting_name_len = 0; - const char *setting_name = NULL; - char line_prefix[128]; + size_t setting_name_len = 0; + const char *setting_name = NULL; + char line_prefix[128]; - setting_name = setting_names[setting_i]; + setting_name = setting_names[setting_i]; setting_name_len = HDstrlen(setting_name); if (HDsnprintf(line_prefix, 128, "%s=", setting_name) < 0) HGOTO_ERROR(H5E_ARGS, H5E_CANTCOPY, FAIL, "unable to format line prefix"); @@ -1985,7 +2022,6 @@ H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, cha if (setting_pointers[setting_i] == NULL) break; - /* advance to end of name in string */ do { line_buffer++; @@ -1997,7 +2033,8 @@ H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, cha line_buffer++; /* was pointing at '='; advance */ /* copy line buffer into out pointer */ - if (HDstrncpy(setting_pointers[setting_i], (const char *)line_buffer, HDstrlen(line_buffer)) == NULL) + if (HDstrncpy(setting_pointers[setting_i], (const char *)line_buffer, + HDstrlen(line_buffer)) == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTCOPY, FAIL, "unable to copy line into pointer"); /* "trim" tailing whitespace by replacing with null terminator*/ @@ -2008,8 +2045,8 @@ H5FD__s3comms_load_aws_creds_from_file(FILE *file, const char *profile_name, cha setting_pointers[setting_i][buffer_i] = '\0'; break; /* have read setting; don't compare with others */ - } /* end if possible name match */ - } /* end for each setting name */ + } /* end if possible name match */ + } /* end for each setting name */ } while (found_setting); done: @@ -2045,10 +2082,11 @@ done: *---------------------------------------------------------------------------- */ herr_t -H5FD_s3comms_load_aws_profile(const char *profile_name, char *key_id_out, char *secret_access_key_out, char *aws_region_out) +H5FD_s3comms_load_aws_profile(const char *profile_name, char *key_id_out, char *secret_access_key_out, + char *aws_region_out) { herr_t ret_value = SUCCEED; - FILE *credfile = NULL; + FILE * credfile = NULL; char awspath[117]; char filepath[128]; int ret = 0; @@ -2060,21 +2098,21 @@ H5FD_s3comms_load_aws_profile(const char *profile_name, char *key_id_out, char * #endif #ifdef H5_HAVE_WIN32_API - ret = HDsnprintf(awspath, 117, "%s/.aws/", getenv("USERPROFILE")) ; + ret = HDsnprintf(awspath, 117, "%s/.aws/", getenv("USERPROFILE")); #else ret = HDsnprintf(awspath, 117, "%s/.aws/", getenv("HOME")); #endif - if (ret < 0 || (size_t) ret >= 117) + if (ret < 0 || (size_t)ret >= 117) HGOTO_ERROR(H5E_ARGS, H5E_CANTCOPY, FAIL, "unable to format home-aws path") ret = HDsnprintf(filepath, 128, "%s%s", awspath, "credentials"); - if (ret < 0 || (size_t) ret >= 128) + if (ret < 0 || (size_t)ret >= 128) HGOTO_ERROR(H5E_ARGS, H5E_CANTCOPY, FAIL, "unable to format credentials path") credfile = fopen(filepath, "r"); if (credfile != NULL) { if (H5FD__s3comms_load_aws_creds_from_file(credfile, profile_name, key_id_out, secret_access_key_out, - aws_region_out) == FAIL) { + aws_region_out) == FAIL) { HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to load from aws credentials") } if (fclose(credfile) == EOF) @@ -2084,13 +2122,13 @@ H5FD_s3comms_load_aws_profile(const char *profile_name, char *key_id_out, char * } /* end if credential file opened */ ret = HDsnprintf(filepath, 128, "%s%s", awspath, "config"); - if (ret < 0 || (size_t) ret >= 128) + if (ret < 0 || (size_t)ret >= 128) HGOTO_ERROR(H5E_ARGS, H5E_CANTCOPY, FAIL, "unable to format config path") credfile = fopen(filepath, "r"); if (credfile != NULL) { - if (H5FD__s3comms_load_aws_creds_from_file(credfile, profile_name, - (*key_id_out == 0) ? key_id_out : NULL, + if (H5FD__s3comms_load_aws_creds_from_file( + credfile, profile_name, (*key_id_out == 0) ? key_id_out : NULL, (*secret_access_key_out == 0) ? secret_access_key_out : NULL, (*aws_region_out == 0) ? aws_region_out : NULL) == FAIL) { HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to load from aws config") @@ -2105,7 +2143,8 @@ H5FD_s3comms_load_aws_profile(const char *profile_name, char *key_id_out, char * if (*key_id_out == 0 || *secret_access_key_out == 0 || *aws_region_out == 0) ret_value = FAIL; - done: if (credfile != NULL) { +done: + if (credfile != NULL) { if (fclose(credfile) == EOF) { HDONE_ERROR(H5E_ARGS, H5E_ARGS, FAIL, "problem error-closing aws configuration file") } @@ -2153,7 +2192,7 @@ H5FD_s3comms_nlowercase(char *dest, const char *s, size_t len) HDmemcpy(dest, s, len); do { len--; - dest[len] = (char) tolower((int) dest[len]); + dest[len] = (char)tolower((int)dest[len]); } while (len > 0); } @@ -2191,12 +2230,12 @@ done: herr_t H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) { - parsed_url_t *purl = NULL; /* pointer to new structure */ - const char *tmpstr = NULL; /* working pointer in string */ - const char *curstr = str; /* "start" pointer in string */ - long int len = 0; /* substring length */ - long int urllen = 0; /* length of passed-in url string */ - unsigned int i = 0; + parsed_url_t *purl = NULL; /* pointer to new structure */ + const char * tmpstr = NULL; /* working pointer in string */ + const char * curstr = str; /* "start" pointer in string */ + long int len = 0; /* substring length */ + long int urllen = 0; /* length of passed-in url string */ + unsigned int i = 0; herr_t ret_value = FAIL; FUNC_ENTER_NOAPI_NOINIT @@ -2208,18 +2247,18 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) if (str == NULL || *str == '\0') HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid url string"); - urllen = (long int) HDstrlen(str); + urllen = (long int)HDstrlen(str); - purl = (parsed_url_t*) H5MM_malloc(sizeof(parsed_url_t)); + purl = (parsed_url_t *)H5MM_malloc(sizeof(parsed_url_t)); if (purl == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "can't allocate space for parsed_url_t"); - purl->magic = S3COMMS_PARSED_URL_MAGIC; + purl->magic = S3COMMS_PARSED_URL_MAGIC; purl->scheme = NULL; - purl->host = NULL; - purl->port = NULL; - purl->path = NULL; - purl->query = NULL; + purl->host = NULL; + purl->port = NULL; + purl->path = NULL; + purl->query = NULL; /*************** * READ SCHEME * @@ -2239,14 +2278,14 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid SCHEME construction"); } /* copy lowercased scheme to structure */ - purl->scheme = (char*) H5MM_malloc(sizeof(char) * (size_t)(len + 1)); + purl->scheme = (char *)H5MM_malloc(sizeof(char) * (size_t)(len + 1)); if (purl->scheme == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "can't allocate space for SCHEME"); - (void) HDstrncpy(purl->scheme, curstr, (size_t )len); + (void)HDstrncpy(purl->scheme, curstr, (size_t)len); purl->scheme[len] = '\0'; for (i = 0; i < len; i++) { - purl->scheme[i] = (char) tolower(purl->scheme[i]); + purl->scheme[i] = (char)tolower(purl->scheme[i]); } /* Skip "://" */ @@ -2254,8 +2293,8 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) curstr = tmpstr; /************* - * READ HOST * - *************/ + * READ HOST * + *************/ if (*curstr == '[') { /* IPv6 */ @@ -2284,11 +2323,11 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) } /* copy host */ - purl->host = (char*) H5MM_malloc(sizeof(char) * (size_t)(len + 1)); + purl->host = (char *)H5MM_malloc(sizeof(char) * (size_t)(len + 1)); if (purl->host == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "can't allocate space for HOST"); - (void) HDstrncpy(purl->host, curstr, (size_t )len); + (void)HDstrncpy(purl->host, curstr, (size_t)len); purl->host[len] = 0; /************* @@ -2315,12 +2354,12 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) } /* copy port - */ - purl->port = (char*) H5MM_malloc(sizeof(char) * (size_t)(len + 1)); + */ + purl->port = (char *)H5MM_malloc(sizeof(char) * (size_t)(len + 1)); if (purl->port == NULL) /* cannot malloc */ HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "can't allocate space for PORT"); - (void) HDstrncpy(purl->port, curstr, (size_t )len); + (void)HDstrncpy(purl->port, curstr, (size_t)len); purl->port[len] = 0; } /* end if PORT element */ @@ -2334,7 +2373,7 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) curstr = tmpstr; /* seek end of PATH - */ + */ while ((0 != *tmpstr) && ('?' != *tmpstr)) { tmpstr++; } @@ -2343,11 +2382,11 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem with length of PATH substring"); if (len > 0) { - purl->path = (char*) H5MM_malloc(sizeof(char) * (size_t)(len + 1)); + purl->path = (char *)H5MM_malloc(sizeof(char) * (size_t)(len + 1)); if (purl->path == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "can't allocate space for PATH"); - /* cannot malloc path pointer */ - (void) HDstrncpy(purl->path, curstr, (size_t )len); + /* cannot malloc path pointer */ + (void)HDstrncpy(purl->path, curstr, (size_t)len); purl->path[len] = 0; } } /* end if PATH element */ @@ -2369,15 +2408,15 @@ H5FD_s3comms_parse_url(const char *str, parsed_url_t **_purl) else if (len > urllen) { HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem with length of QUERY substring"); } - purl->query = (char*) H5MM_malloc(sizeof(char) * (size_t)(len + 1)); + purl->query = (char *)H5MM_malloc(sizeof(char) * (size_t)(len + 1)); if (purl->query == NULL) HGOTO_ERROR(H5E_ARGS, H5E_CANTALLOC, FAIL, "can't allocate space for QUERY"); /* cannot malloc path pointer */ - (void) HDstrncpy(purl->query, curstr, (size_t )len); + (void)HDstrncpy(purl->query, curstr, (size_t)len); purl->query[len] = 0; } /* end if QUERY exists */ - *_purl = purl; + *_purl = purl; ret_value = SUCCEED; done: @@ -2425,11 +2464,11 @@ done: herr_t H5FD_s3comms_percent_encode_char(char *repr, const unsigned char c, size_t *repr_len) { - unsigned int i = 0; + unsigned int i = 0; int chars_written = 0; - herr_t ret_value = SUCCEED; + herr_t ret_value = SUCCEED; #if S3COMMS_DEBUG - unsigned char s[2] = {c, 0}; + unsigned char s[2] = {c, 0}; unsigned char hex[3] = {0, 0, 0}; #endif @@ -2442,21 +2481,20 @@ H5FD_s3comms_percent_encode_char(char *repr, const unsigned char c, size_t *repr if (repr == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no destination `repr`.\n") - #if S3COMMS_DEBUG H5FD_s3comms_bytes_to_hex((char *)hex, s, 1, FALSE); HDfprintf(stdout, " CHAR: \'%s\'\n", s); HDfprintf(stdout, " CHAR-HEX: \"%s\"\n", hex); #endif - if (c <= (unsigned char) 0x7f) { + if (c <= (unsigned char)0x7f) { /* character represented in a single "byte" * and single percent-code */ #if S3COMMS_DEBUG HDfprintf(stdout, " SINGLE-BYTE\n"); #endif - *repr_len = 3; + *repr_len = 3; chars_written = HDsnprintf(repr, 4, "%%%02X", c); if (chars_written < 0) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "cannot write char %c", c); @@ -2464,23 +2502,23 @@ H5FD_s3comms_percent_encode_char(char *repr, const unsigned char c, size_t *repr } /* end if single-byte unicode char */ else { /* multi-byte, multi-percent representation */ - unsigned int acc = 0; /* byte accumulator */ - unsigned int k = 0; /* uint character representation */ - unsigned int stack_size = 0; - unsigned char stack[4] = { 0, 0, 0, 0 }; + unsigned int acc = 0; /* byte accumulator */ + unsigned int k = 0; /* uint character representation */ + unsigned int stack_size = 0; + unsigned char stack[4] = {0, 0, 0, 0}; #if S3COMMS_DEBUG HDfprintf(stdout, " MULTI-BYTE\n"); #endif stack_size = 0; - k = (unsigned int) c; - *repr_len = 0; + k = (unsigned int)c; + *repr_len = 0; do { /* push number onto stack in six-bit slices */ acc = k; acc >>= 6; /* cull least */ acc <<= 6; /* six bits */ - stack[stack_size++] = (unsigned char) (k - acc); - k = acc >> 6; + stack[stack_size++] = (unsigned char)(k - acc); + k = acc >> 6; } while (k > 0); /* `stack` now has two to four six-bit 'numbers' to be put into @@ -2503,11 +2541,11 @@ H5FD_s3comms_percent_encode_char(char *repr, const unsigned char c, size_t *repr /* prepend 11[1[1]]0 to first byte */ /* 110xxxxx, 1110xxxx, or 11110xxx */ - acc = 0xC0; /* 0x11000000 */ + acc = 0xC0; /* 0x11000000 */ acc += (stack_size > 2) ? 0x20 : 0; /* 0x00100000 */ acc += (stack_size > 3) ? 0x10 : 0; /* 0x00010000 */ stack_size--; - chars_written = HDsnprintf(repr, 4, "%%%02X", (unsigned char) (acc + stack[stack_size])); + chars_written = HDsnprintf(repr, 4, "%%%02X", (unsigned char)(acc + stack[stack_size])); if (chars_written < 0) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "cannot write char %c", c); @@ -2519,13 +2557,14 @@ H5FD_s3comms_percent_encode_char(char *repr, const unsigned char c, size_t *repr /* 10xxxxxx */ for (i = 0; i < stack_size; i++) { - chars_written = HDsnprintf(&repr[i * 3 + 3], 4, "%%%02X", (unsigned char) (0x80 + stack[stack_size - 1 - i])); + chars_written = + HDsnprintf(&repr[i * 3 + 3], 4, "%%%02X", (unsigned char)(0x80 + stack[stack_size - 1 - i])); if (chars_written < 0) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "cannot write char %c", c); *repr_len += 3; } /* end for each continuation byte */ - } /* end else (multi-byte) */ + } /* end else (multi-byte) */ *(repr + *repr_len) = '\0'; @@ -2570,12 +2609,12 @@ done: herr_t H5FD_s3comms_signing_key(unsigned char *md, const char *secret, const char *region, const char *iso8601now) { - char *AWS4_secret = NULL; + char * AWS4_secret = NULL; size_t AWS4_secret_len = 0; unsigned char datekey[SHA256_DIGEST_LENGTH]; unsigned char dateregionkey[SHA256_DIGEST_LENGTH]; unsigned char dateregionservicekey[SHA256_DIGEST_LENGTH]; - int ret = 0; /* return value of HDsnprintf */ + int ret = 0; /* return value of HDsnprintf */ herr_t ret_value = SUCCEED; FUNC_ENTER_NOAPI_NOINIT @@ -2597,27 +2636,27 @@ H5FD_s3comms_signing_key(unsigned char *md, const char *secret, const char *regi HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "`iso8601now` cannot be NULL.\n") AWS4_secret_len = 4 + HDstrlen(secret) + 1; - AWS4_secret = (char*) H5MM_malloc(sizeof(char*) * AWS4_secret_len); + AWS4_secret = (char *)H5MM_malloc(sizeof(char *) * AWS4_secret_len); if (AWS4_secret == NULL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Could not allocate space.\n") /* prepend "AWS4" to start of the secret key */ ret = HDsnprintf(AWS4_secret, AWS4_secret_len, "%s%s", "AWS4", secret); - if ((size_t) ret != (AWS4_secret_len - 1)) + if ((size_t)ret != (AWS4_secret_len - 1)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem writing AWS4+secret `%s`", secret); /* hash_func, key, len(key), msg, len(msg), digest_dest, digest_len_dest * we know digest length, so ignore via NULL */ - HMAC(EVP_sha256(), (const unsigned char*) AWS4_secret, (int) HDstrlen(AWS4_secret), - (const unsigned char*) iso8601now, 8, /* 8 --> length of 8 --> "yyyyMMDD" */ - datekey, NULL); - HMAC(EVP_sha256(), (const unsigned char*) datekey, SHA256_DIGEST_LENGTH, (const unsigned char*) region, - HDstrlen(region), dateregionkey, NULL); - HMAC(EVP_sha256(), (const unsigned char*) dateregionkey, SHA256_DIGEST_LENGTH, (const unsigned char*) "s3", - 2, dateregionservicekey, NULL); - HMAC(EVP_sha256(), (const unsigned char*) dateregionservicekey, SHA256_DIGEST_LENGTH, - (const unsigned char*) "aws4_request", 12, md, NULL); + HMAC(EVP_sha256(), (const unsigned char *)AWS4_secret, (int)HDstrlen(AWS4_secret), + (const unsigned char *)iso8601now, 8, /* 8 --> length of 8 --> "yyyyMMDD" */ + datekey, NULL); + HMAC(EVP_sha256(), (const unsigned char *)datekey, SHA256_DIGEST_LENGTH, (const unsigned char *)region, + HDstrlen(region), dateregionkey, NULL); + HMAC(EVP_sha256(), (const unsigned char *)dateregionkey, SHA256_DIGEST_LENGTH, + (const unsigned char *)"s3", 2, dateregionservicekey, NULL); + HMAC(EVP_sha256(), (const unsigned char *)dateregionservicekey, SHA256_DIGEST_LENGTH, + (const unsigned char *)"aws4_request", 12, md, NULL); done: H5MM_xfree(AWS4_secret); @@ -2664,8 +2703,8 @@ H5FD_s3comms_tostringtosign(char *dest, const char *req, const char *now, const size_t d = 0; char day[9]; char hexsum[SHA256_DIGEST_LENGTH * 2 + 1]; - size_t i = 0; - int ret = 0; /* HDsnprintf return value */ + size_t i = 0; + int ret = 0; /* HDsnprintf return value */ herr_t ret_value = SUCCEED; char tmp[128]; @@ -2692,11 +2731,11 @@ H5FD_s3comms_tostringtosign(char *dest, const char *req, const char *now, const } for (i = 0; i < SHA256_DIGEST_LENGTH * 2 + 1; i++) { checksum[i] = '\0'; - hexsum[i] = '\0'; + hexsum[i] = '\0'; } HDstrncpy(day, now, 8); day[8] = '\0'; - ret = HDsnprintf(tmp, 127, "%s/%s/s3/aws4_request", day, region); + ret = HDsnprintf(tmp, 127, "%s/%s/s3/aws4_request", day, region); if (ret <= 0 || ret >= 127) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "problem adding day and region to string") @@ -2711,9 +2750,10 @@ H5FD_s3comms_tostringtosign(char *dest, const char *req, const char *now, const d += HDstrlen(tmp); dest[d++] = '\n'; - SHA256((const unsigned char*) req, HDstrlen(req), checksum); + SHA256((const unsigned char *)req, HDstrlen(req), checksum); - if (H5FD_s3comms_bytes_to_hex(hexsum, (const unsigned char*) checksum, SHA256_DIGEST_LENGTH, TRUE) == FAIL) + if (H5FD_s3comms_bytes_to_hex(hexsum, (const unsigned char *)checksum, SHA256_DIGEST_LENGTH, TRUE) == + FAIL) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "could not create hex string"); for (i = 0; i < SHA256_DIGEST_LENGTH * 2; i++) { @@ -2771,9 +2811,9 @@ H5FD_s3comms_trim(char *dest, char *s, size_t s_len, size_t *n_written) if (s_len > 0) { /* Find first non-whitespace character from start; - * reduce total length per character. - */ - while ((s_len > 0) && isspace((unsigned char) s[0]) && s_len > 0) { + * reduce total length per character. + */ + while ((s_len > 0) && isspace((unsigned char)s[0]) && s_len > 0) { s++; s_len--; } @@ -2785,11 +2825,11 @@ H5FD_s3comms_trim(char *dest, char *s, size_t s_len, size_t *n_written) if (s_len > 0) { do { s_len--; - } while (isspace((unsigned char) s[s_len])); + } while (isspace((unsigned char)s[s_len])); s_len++; /* write output into dest - */ + */ HDmemcpy(dest, s, s_len); } } @@ -2837,13 +2877,13 @@ done: herr_t H5FD_s3comms_uriencode(char *dest, const char *s, size_t s_len, hbool_t encode_slash, size_t *n_written) { - char c = 0; + char c = 0; size_t dest_off = 0; char hex_buffer[13]; - size_t hex_off = 0; - size_t hex_len = 0; + size_t hex_off = 0; + size_t hex_len = 0; herr_t ret_value = SUCCEED; - size_t s_off = 0; + size_t s_off = 0; FUNC_ENTER_NOAPI_NOINIT @@ -2858,28 +2898,31 @@ H5FD_s3comms_uriencode(char *dest, const char *s, size_t s_len, hbool_t encode_s HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "destination cannot be NULL"); /* Write characters to destination, converting to percent-encoded - * "hex-utf-8" strings if necessary. - * e.g., '$' -> "%24" - */ + * "hex-utf-8" strings if necessary. + * e.g., '$' -> "%24" + */ for (s_off = 0; s_off < s_len; s_off++) { c = s[s_off]; - if (isalnum(c) || c == '.' || c == '-' || c == '_' || c == '~' || (c == '/' && encode_slash == FALSE)) { + if (isalnum(c) || c == '.' || c == '-' || c == '_' || c == '~' || + (c == '/' && encode_slash == FALSE)) { dest[dest_off++] = c; } else { hex_off = 0; - if (H5FD_s3comms_percent_encode_char(hex_buffer, (const unsigned char) c, &hex_len) == FAIL) { + if (H5FD_s3comms_percent_encode_char(hex_buffer, (const unsigned char)c, &hex_len) == FAIL) { hex_buffer[0] = c; hex_buffer[1] = 0; - HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "unable to percent-encode character \'%s\' " - "at %d in \"%s\"", hex_buffer, (int )s_off, s); + HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, + "unable to percent-encode character \'%s\' " + "at %d in \"%s\"", + hex_buffer, (int)s_off, s); } for (hex_off = 0; hex_off < hex_len; hex_off++) { dest[dest_off++] = hex_buffer[hex_off]; } } /* end else (not a regular character) */ - } /* end for each character */ + } /* end for each character */ if (dest_off < s_len) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "buffer overflow"); @@ -2891,4 +2934,3 @@ done: } /* H5FD_s3comms_uriencode */ #endif /* H5_HAVE_ROS3_VFD */ - |