commit 0337c71
default
·
2022-12-11 08:46:27 +0000 UTC
parent 79270ab
Backport from xs.
3 files changed,
+22,
-6
M
xs.h
+18,
-0
1@@ -90,6 +90,7 @@ d_char *xs_number_new(double f);
2 double xs_number_get(const char *v);
3 const char *xs_number_str(const char *v);
4
5+void *xs_memmem(const char *haystack, int h_size, const char *needle, int n_size);
6
7 #ifdef XS_IMPLEMENTATION
8
9@@ -907,6 +908,23 @@ const char *xs_number_str(const char *v)
10 }
11
12
13+void *xs_memmem(const char *haystack, int h_size, const char *needle, int n_size)
14+/* clone of memmem */
15+{
16+ char *p, *r = NULL;
17+ int offset = 0;
18+
19+ while (!r && h_size - offset > n_size && (p = strchr(haystack + offset, *needle))) {
20+ if (memcmp(p, needle, n_size) == 0)
21+ r = p;
22+ else
23+ offset = p - haystack + 1;
24+ }
25+
26+ return r;
27+}
28+
29+
30 #endif /* XS_IMPLEMENTATION */
31
32 #endif /* _XS_H */
+3,
-5
1@@ -69,8 +69,6 @@ d_char *xs_url_vars(char *str)
2 }
3
4
5-void *memmem(const void *, size_t, const void *, size_t);
6-
7 d_char *_xs_multipart_form_data(char *payload, int p_size, char *header)
8 /* parses a multipart/form-data payload */
9 {
10@@ -94,7 +92,7 @@ d_char *_xs_multipart_form_data(char *payload, int p_size, char *header)
11 d_char *p_vars = xs_dict_new();
12
13 /* iterate searching the boundaries */
14- while ((p = memmem(payload + offset, p_size - offset, boundary, bsz)) != NULL) {
15+ while ((p = xs_memmem(payload + offset, p_size - offset, boundary, bsz)) != NULL) {
16 xs *s1 = NULL;
17 xs *l1 = NULL;
18 char *vn = NULL;
19@@ -133,13 +131,13 @@ d_char *_xs_multipart_form_data(char *payload, int p_size, char *header)
20 }
21
22 /* find the start of the part content */
23- if ((p = memmem(p, p_size - offset, "\r\n\r\n", 4)) == NULL)
24+ if ((p = xs_memmem(p, p_size - offset, "\r\n\r\n", 4)) == NULL)
25 break;
26
27 p += 4;
28
29 /* find the next boundary */
30- if ((q = memmem(p, p_size - offset, boundary, bsz)) == NULL)
31+ if ((q = xs_memmem(p, p_size - offset, boundary, bsz)) == NULL)
32 break;
33
34 po = p - payload;
+1,
-1
1@@ -1 +1 @@
2-/* ad1c7ba748725abdecc1f1124d697f9130c49e87 */
3+/* 3aa82bc4fc310ec95194602bed88a9767e100350 */