summaryrefslogtreecommitdiffstats
path: root/src/H5FDs3comms.c
diff options
context:
space:
mode:
authorAllen Byrne <byrn@hdfgroup.org>2020-10-01 16:47:45 (GMT)
committerAllen Byrne <byrn@hdfgroup.org>2020-10-01 16:47:45 (GMT)
commit1ba1f2f3222cbe8df0bf601929a4bffd478d7e02 (patch)
treeae51dfc33cf40432dad25a5088767115a98f195e /src/H5FDs3comms.c
parent8eef7d295cc3dd134aef0a826f1de4287629996d (diff)
downloadhdf5-1ba1f2f3222cbe8df0bf601929a4bffd478d7e02.zip
hdf5-1ba1f2f3222cbe8df0bf601929a4bffd478d7e02.tar.gz
hdf5-1ba1f2f3222cbe8df0bf601929a4bffd478d7e02.tar.bz2
Source formatted
Diffstat (limited to 'src/H5FDs3comms.c')
-rw-r--r--src/H5FDs3comms.c744
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 */
-