lib1537.c
Go to the documentation of this file.
1 /***************************************************************************
2  * _ _ ____ _
3  * Project ___| | | | _ \| |
4  * / __| | | | |_) | |
5  * | (__| |_| | _ <| |___
6  * \___|\___/|_| \_\_____|
7  *
8  * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
9  *
10  * This software is licensed as described in the file COPYING, which
11  * you should have received as part of this distribution. The terms
12  * are also available at https://curl.haxx.se/docs/copyright.html.
13  *
14  * You may opt to use, copy, modify, merge, publish, distribute and/or sell
15  * copies of the Software, and permit persons to whom the Software is
16  * furnished to do so, under the terms of the COPYING file.
17  *
18  * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
19  * KIND, either express or implied.
20  *
21  ***************************************************************************/
22 #include "test.h"
23 
24 #include "memdebug.h"
25 
26 int test(char *URL)
27 {
28  const unsigned char a[] = {0x2f, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
29  0x91, 0xa2, 0xb3, 0xc4, 0xd5, 0xe6, 0xf7};
31  char *ptr = NULL;
32  int asize;
33  int outlen;
34  char *raw;
35 
36  (void)URL; /* we don't use this */
37 
39  fprintf(stderr, "curl_global_init() failed\n");
40  return TEST_ERR_MAJOR_BAD;
41  }
42 
43  asize = (int)sizeof(a);
44  ptr = curl_easy_escape(NULL, (char *)a, asize);
45  printf("%s\n", ptr);
46  if(ptr)
47  curl_free(ptr);
48 
49  /* deprecated API */
50  ptr = curl_escape((char *)a, asize);
51  printf("%s\n", ptr);
52  if(!ptr) {
53  res = TEST_ERR_MAJOR_BAD;
54  goto test_cleanup;
55  }
56 
57  raw = curl_easy_unescape(NULL, ptr, (int)strlen(ptr), &outlen);
58  printf("outlen == %d\n", outlen);
59  printf("unescape == original? %s\n",
60  memcmp(raw, a, outlen) ? "no" : "YES");
61  if(raw)
62  curl_free(raw);
63 
64  /* deprecated API */
65  raw = curl_unescape(ptr, (int)strlen(ptr));
66  if(!raw) {
67  res = TEST_ERR_MAJOR_BAD;
68  goto test_cleanup;
69  }
70  outlen = (int)strlen(raw);
71  printf("[old] outlen == %d\n", outlen);
72  printf("[old] unescape == original? %s\n",
73  memcmp(raw, a, outlen) ? "no" : "YES");
74  if(raw)
75  curl_free(raw);
76  if(ptr)
77  curl_free(ptr);
78 
79  /* weird input length */
80  ptr = curl_easy_escape(NULL, (char *)a, -1);
81  printf("escape -1 length: %s\n", ptr);
82 
83  /* weird input length */
84  outlen = 2017; /* just a value */
85  ptr = curl_easy_unescape(NULL, (char *)"moahahaha", -1, &outlen);
86  printf("unescape -1 length: %s %d\n", ptr, outlen);
87 
88 test_cleanup:
89  if(ptr)
90  curl_free(ptr);
92 
93  return (int)res;
94 }
CURL_EXTERN void curl_free(void *p)
Definition: escape.c:239
CURL_EXTERN char * curl_unescape(const char *string, int length)
Definition: escape.c:74
CURL_EXTERN char * curl_easy_escape(CURL *handle, const char *string, int length)
int test(char *URL)
Definition: lib1537.c:26
UNITTEST_START char * ptr
Definition: unit1330.c:38
CURLcode
Definition: curl.h:454
static int res
#define TEST_ERR_MAJOR_BAD
Definition: test.h:85
#define printf
Definition: curl_printf.h:40
CURL_EXTERN char * curl_escape(const char *string, int length)
Definition: escape.c:68
Definition: unit1323.c:36
Definition: curl.h:455
CURL_EXTERN CURLcode curl_global_init(long flags)
curl_global_init() globally initializes curl given a bitwise set of the different features of what to...
Definition: easy.c:271
#define fprintf
Definition: curl_printf.h:41
CURL_EXTERN void curl_global_cleanup(void)
curl_global_cleanup() globally cleanups curl, uses the value of "init_flags" to determine what needs ...
Definition: easy.c:312
#define CURL_GLOBAL_ALL
Definition: curl.h:2519
CURL_EXTERN char * curl_easy_unescape(CURL *handle, const char *string, int length, int *outlength)


rc_tagdetect_client
Author(s): Monika Florek-Jasinska , Raphael Schaller
autogenerated on Sat Feb 13 2021 03:42:15