File: 0005-whitespaces.patch

package info (click to toggle)
vsftpd 3.0.5-0.2
  • links: PTS
  • area: main
  • in suites: trixie
  • size: 2,636 kB
  • sloc: ansic: 16,810; sh: 251; makefile: 51; python: 18
file content (86 lines) | stat: -rw-r--r-- 2,883 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
Author: Jiri Skala <jskala@redhat.com>
Description: trim white spaces from option values (Closes: #419857, #536803).

Index: trunk/parseconf.c
===================================================================
--- trunk.orig/parseconf.c
+++ trunk/parseconf.c
@@ -279,7 +279,7 @@ vsf_parseconf_load_setting(const char* p
         }
         else
         {
-          *p_curr_setting = str_strdup(&s_value_str);
+          *p_curr_setting = str_strdup_trimmed(&s_value_str);
         }
         return;
       }
Index: trunk/str.c
===================================================================
--- trunk.orig/str.c
+++ trunk/str.c
@@ -104,6 +104,18 @@ str_strdup(const struct mystr* p_str)
   return vsf_sysutil_strdup(str_getbuf(p_str));
 }
 
+const char*
+str_strdup_trimmed(const struct mystr* p_str)
+{
+  const char* p_trimmed = str_getbuf(p_str);
+  int h, t, newlen;
+
+  for (h = 0; h < (int)str_getlen(p_str) && vsf_sysutil_isspace(p_trimmed[h]); h++) ;
+  for (t = str_getlen(p_str) - 1; t >= 0 && vsf_sysutil_isspace(p_trimmed[t]); t--) ;
+  newlen = t - h + 1;
+  return newlen ? vsf_sysutil_strndup(p_trimmed+h, (unsigned int)newlen) : 0L;
+}
+
 void
 str_alloc_alt_term(struct mystr* p_str, const char* p_src, char term)
 {
Index: trunk/str.h
===================================================================
--- trunk.orig/str.h
+++ trunk/str.h
@@ -31,6 +31,7 @@ void str_alloc_ulong(struct mystr* p_str
 void str_alloc_filesize_t(struct mystr* p_str, filesize_t the_filesize);
 void str_copy(struct mystr* p_dest, const struct mystr* p_src);
 const char* str_strdup(const struct mystr* p_str);
+const char* str_strdup_trimmed(const struct mystr* p_str);
 void str_empty(struct mystr* p_str);
 void str_free(struct mystr* p_str);
 void str_trunc(struct mystr* p_str, unsigned int trunc_len);
Index: trunk/sysutil.c
===================================================================
--- trunk.orig/sysutil.c
+++ trunk/sysutil.c
@@ -1035,6 +1035,18 @@ vsf_sysutil_strdup(const char* p_str)
   return strdup(p_str);
 }
 
+char*
+vsf_sysutil_strndup(const char* p_str, unsigned int p_len)
+{
+  char *new = (char *)malloc(p_len+1);
+
+  if (new == NULL)
+    return NULL;
+
+  new[p_len]='\0';
+  return (char *)memcpy(new, p_str, p_len);
+}
+
 void
 vsf_sysutil_memclr(void* p_dest, unsigned int size)
 {
Index: trunk/sysutil.h
===================================================================
--- trunk.orig/sysutil.h
+++ trunk/sysutil.h
@@ -186,6 +186,7 @@ int vsf_sysutil_wait_get_exitcode(
 /* Various string functions */
 unsigned int vsf_sysutil_strlen(const char* p_text);
 char* vsf_sysutil_strdup(const char* p_str);
+char* vsf_sysutil_strndup(const char* p_str, unsigned int p_len);
 void vsf_sysutil_memclr(void* p_dest, unsigned int size);
 void vsf_sysutil_memcpy(void* p_dest, const void* p_src,
                         const unsigned int size);