Skip to content

Commit

Permalink
Fix lack of unit64 support
Browse files Browse the repository at this point in the history
Signed-off-by: Sourav Moitra <[email protected]>
  • Loading branch information
xw19 committed Dec 31, 2024
1 parent 42de7be commit 7fc2991
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 6 deletions.
Empty file added src/ocispec/.dirstamp
Empty file.
15 changes: 11 additions & 4 deletions src/ocispec/json_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -141,10 +141,17 @@ json_double_to_uint (double d, unsigned int *converted)
int
json_double_to_uint64 (double d, uint64_t *converted)
{
unsigned long long int ull;
ull = (unsigned long long int) d;
*converted = (uint64_t) ull;
return 0;
// Safely convert double to uint64_t by checking for potential overflows
if (d >= 9223372036854775807.0) { // Check if value is greater than or equal to 2^32
// TODO: Better solution for converting double to uint64
char string[20];
sprintf(string, "%0.f", d);
*converted = strtoull(string, NULL, 10);
} else {
// Handle smaller values (less than 2^32)
*converted = (uint64_t) d;
}
return 0;
}

/*
Expand Down
1 change: 1 addition & 0 deletions src/ocispec/json_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <string.h>
#include <stdint.h>
#include <jansson.h>
#include <math.h>

#ifdef __cplusplus
extern "C" {
Expand Down
7 changes: 6 additions & 1 deletion tests/data/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,15 @@
},
"rlimits": [
{
"type": "RLIMIT_NOFILE",
"type": "RLIMIT_CORE",
"hard": 18446744073709551615,
"soft": 18446744073709551615
},
{
"type": "RLIMIT_NOFILE",
"hard": 1024,
"soft": 1024
},
{
"type": "RLIMIT_NPROC",
"hard": 1048576,
Expand Down
2 changes: 1 addition & 1 deletion tests/test-1.c
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ main ()
exit (6);
if (strcmp (container->process->args[0], "ARGS1") && strcmp (container->process->args[0], container_gen->process->args[0]))
exit (61);
if (container->process->rlimits[0]->hard == hard_limit && container_gen->process->rlimits[0]->hard == container->process->rlimits[0]->hard)
if (container->process->rlimits[0]->hard != hard_limit)
exit (63);
if (strcmp (container->mounts[0]->destination, "/proc") && strcmp (container->mounts[0]->destination, container_gen->mounts[0]->destination))
exit (62);
Expand Down

0 comments on commit 7fc2991

Please sign in to comment.