diff options
author | orivej <orivej@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:49 +0300 |
commit | 718c552901d703c502ccbefdfc3c9028d608b947 (patch) | |
tree | 46534a98bbefcd7b1f3faa5b52c138ab27db75b7 /contrib/restricted/aws/s2n/utils/s2n_str.c | |
parent | e9656aae26e0358d5378e5b63dcac5c8dbe0e4d0 (diff) | |
download | ydb-718c552901d703c502ccbefdfc3c9028d608b947.tar.gz |
Restoring authorship annotation for <orivej@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/restricted/aws/s2n/utils/s2n_str.c')
-rw-r--r-- | contrib/restricted/aws/s2n/utils/s2n_str.c | 98 |
1 files changed, 49 insertions, 49 deletions
diff --git a/contrib/restricted/aws/s2n/utils/s2n_str.c b/contrib/restricted/aws/s2n/utils/s2n_str.c index a1be56b427..a80e7a2ed8 100644 --- a/contrib/restricted/aws/s2n/utils/s2n_str.c +++ b/contrib/restricted/aws/s2n/utils/s2n_str.c @@ -1,49 +1,49 @@ -/* - * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). - * You may not use this file except in compliance with the License. - * A copy of the License is located at - * - * http://aws.amazon.com/apache2.0 - * - * or in the "license" file accompanying this file. This file is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either - * express or implied. See the License for the specific language governing - * permissions and limitations under the License. - */ -#include <string.h> -#include <sys/param.h> -#include "utils/s2n_str.h" - -char *s2n_strcpy(char *buf, char *last, const char *str) { - -/* CBMC pointer checks need to be disabled to compare buf and last for - * the case where they are the same. */ -#pragma CPROVER check push -#pragma CPROVER check disable "pointer" - - if (buf >= last) { - return buf; - } - -#pragma CPROVER check pop - - if (NULL == str) { - *buf = '\0'; - return buf; - } - - /* Free bytes needs to be one byte smaller than size of a storage, - * as strncpy always writes '\0', but doesn't include it in n - */ - size_t bytes_to_copy = MIN(last - buf - 1, strlen(str)); - - char *p = buf; - if (bytes_to_copy > 0) { - p = (char *)memcpy(buf, str, bytes_to_copy) + bytes_to_copy; - } - *p = '\0'; - - return p; -} +/* + * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ +#include <string.h> +#include <sys/param.h> +#include "utils/s2n_str.h" + +char *s2n_strcpy(char *buf, char *last, const char *str) { + +/* CBMC pointer checks need to be disabled to compare buf and last for + * the case where they are the same. */ +#pragma CPROVER check push +#pragma CPROVER check disable "pointer" + + if (buf >= last) { + return buf; + } + +#pragma CPROVER check pop + + if (NULL == str) { + *buf = '\0'; + return buf; + } + + /* Free bytes needs to be one byte smaller than size of a storage, + * as strncpy always writes '\0', but doesn't include it in n + */ + size_t bytes_to_copy = MIN(last - buf - 1, strlen(str)); + + char *p = buf; + if (bytes_to_copy > 0) { + p = (char *)memcpy(buf, str, bytes_to_copy) + bytes_to_copy; + } + *p = '\0'; + + return p; +} |