aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChloe Kudryavtsev <code@toast.bunkerlabs.net>2023-04-03 10:40:17 -0400
committerChloe Kudryavtsev <code@toast.bunkerlabs.net>2023-04-03 10:40:17 -0400
commit4c5cf9aa40c116938af1039facffe52a6091d744 (patch)
tree78423169732dc051608a26e8f4a07036cb2d7de3
parentmeta: update to 1.1.2 (diff)
native: make strings more permissive
* adds a getcbytes that accepts any JanetBytes * use it across the board, except where we can inform curl of the length
-rw-r--r--src/jurl.h1
-rw-r--r--src/mime.c8
-rw-r--r--src/setopt.c2
-rw-r--r--src/util.c10
4 files changed, 15 insertions, 6 deletions
diff --git a/src/jurl.h b/src/jurl.h
index 0364e3b..2f720c0 100644
--- a/src/jurl.h
+++ b/src/jurl.h
@@ -90,6 +90,7 @@ JANET_CFUN(jurl_setopt);
// util.c
int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n);
+const char *janet_getcbytes(const Janet *argv, int32_t n);
JANET_CFUN(jurl_escape);
JANET_CFUN(jurl_unescape);
JANET_CFUN(jurl_wrap_error);
diff --git a/src/mime.c b/src/mime.c
index fb80d09..6913920 100644
--- a/src/mime.c
+++ b/src/mime.c
@@ -106,7 +106,7 @@ JANET_CFUN(jurl_mime_name) {
if (janet_checktype(argv[1], JANET_NIL)) {
ret = curl_mime_name(part->mimepart, NULL);
} else {
- const char *s = (const char*)janet_getcstring(argv, 1);
+ const char *s = (const char*)janet_getcbytes(argv, 1);
ret = curl_mime_name(part->mimepart, s);
}
return jurl_geterror(ret);
@@ -198,7 +198,7 @@ JANET_CFUN(jurl_mime_filedata) {
if (janet_checktype(argv[1], JANET_NIL)) {
ret = curl_mime_filedata(part->mimepart, NULL);
} else {
- const char *s = (const char*)janet_getcstring(argv, 1);
+ const char *s = (const char*)janet_getcbytes(argv, 1);
ret = curl_mime_filedata(part->mimepart, s);
}
return jurl_geterror(ret);
@@ -211,7 +211,7 @@ JANET_CFUN(jurl_mime_filename) {
if (janet_checktype(argv[1], JANET_NIL)) {
ret = curl_mime_filename(part->mimepart, NULL);
} else {
- const char *s = (const char*)janet_getcstring(argv, 1);
+ const char *s = (const char*)janet_getcbytes(argv, 1);
ret = curl_mime_filename(part->mimepart, s);
}
return jurl_geterror(ret);
@@ -224,7 +224,7 @@ JANET_CFUN(jurl_mime_type) {
if (janet_checktype(argv[1], JANET_NIL)) {
ret = curl_mime_type(part->mimepart, NULL);
} else {
- const char *s = (const char*)janet_getcstring(argv, 1);
+ const char *s = (const char*)janet_getcbytes(argv, 1);
ret = curl_mime_type(part->mimepart, s);
}
return jurl_geterror(ret);
diff --git a/src/setopt.c b/src/setopt.c
index 1d70587..a82f34d 100644
--- a/src/setopt.c
+++ b/src/setopt.c
@@ -413,7 +413,7 @@ JANET_CFUN(jurl_setopt) {
));
} else {
return jurl_geterror(
- curl_easy_setopt(jurl->handle, opt->opt, janet_getcstring(argv, 2)
+ curl_easy_setopt(jurl->handle, opt->opt, janet_getcbytes(argv, 2)
));
}
break;
diff --git a/src/util.c b/src/util.c
index f9a7b1c..0938ada 100644
--- a/src/util.c
+++ b/src/util.c
@@ -4,7 +4,7 @@
int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n) {
JanetView args = janet_getindexed(argv, n);
for (int32_t i = 0; i< args.len; i++) {
- const char *s = janet_getcstring(args.items, i);
+ const char *s = janet_getcbytes(args.items, i);
struct curl_slist *newlist = curl_slist_append(*slist, s);
if (!newlist) {
return 0;
@@ -14,6 +14,14 @@ int janet_getslist(struct curl_slist **slist, Janet *argv, int32_t n) {
return 1;
}
+const char *janet_getcbytes(const Janet *argv, int32_t n) {
+ JanetByteView b = janet_getbytes(argv, n);
+ if (strlen((const char*) b.bytes) != (size_t) b.len) {
+ janet_panic("bytes contain embedded 0s");
+ }
+ return (const char*)b.bytes;
+}
+
JANET_CFUN(jurl_escape) {
janet_fixarity(argc, 1);
JanetByteView b = janet_getbytes(argv, 0);