aboutsummaryrefslogtreecommitdiffstats
path: root/lib/string_helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/string_helpers.c')
-rw-r--r--lib/string_helpers.c49
1 files changed, 7 insertions, 42 deletions
diff --git a/lib/string_helpers.c b/lib/string_helpers.c
index 9c48ddad0f0d..1826c7407258 100644
--- a/lib/string_helpers.c
+++ b/lib/string_helpers.c
@@ -274,11 +274,6 @@ static bool escape_space(unsigned char c, char **dst, char *end)
274 return false; 274 return false;
275 } 275 }
276 276
277 if (out + 2 > end) {
278 *dst = out + 2;
279 return true;
280 }
281
282 if (out < end) 277 if (out < end)
283 *out = '\\'; 278 *out = '\\';
284 ++out; 279 ++out;
@@ -309,11 +304,6 @@ static bool escape_special(unsigned char c, char **dst, char *end)
309 return false; 304 return false;
310 } 305 }
311 306
312 if (out + 2 > end) {
313 *dst = out + 2;
314 return true;
315 }
316
317 if (out < end) 307 if (out < end)
318 *out = '\\'; 308 *out = '\\';
319 ++out; 309 ++out;
@@ -332,11 +322,6 @@ static bool escape_null(unsigned char c, char **dst, char *end)
332 if (c) 322 if (c)
333 return false; 323 return false;
334 324
335 if (out + 2 > end) {
336 *dst = out + 2;
337 return true;
338 }
339
340 if (out < end) 325 if (out < end)
341 *out = '\\'; 326 *out = '\\';
342 ++out; 327 ++out;
@@ -352,11 +337,6 @@ static bool escape_octal(unsigned char c, char **dst, char *end)
352{ 337{
353 char *out = *dst; 338 char *out = *dst;
354 339
355 if (out + 4 > end) {
356 *dst = out + 4;
357 return true;
358 }
359
360 if (out < end) 340 if (out < end)
361 *out = '\\'; 341 *out = '\\';
362 ++out; 342 ++out;
@@ -378,11 +358,6 @@ static bool escape_hex(unsigned char c, char **dst, char *end)
378{ 358{
379 char *out = *dst; 359 char *out = *dst;
380 360
381 if (out + 4 > end) {
382 *dst = out + 4;
383 return true;
384 }
385
386 if (out < end) 361 if (out < end)
387 *out = '\\'; 362 *out = '\\';
388 ++out; 363 ++out;
@@ -449,20 +424,17 @@ static bool escape_hex(unsigned char c, char **dst, char *end)
449 * it if needs. 424 * it if needs.
450 * 425 *
451 * Return: 426 * Return:
452 * The amount of the characters processed to the destination buffer, or 427 * The total size of the escaped output that would be generated for
453 * %-ENOMEM if the size of buffer is not enough to put an escaped character is 428 * the given input and flags. To check whether the output was
454 * returned. 429 * truncated, compare the return value to osz. There is room left in
455 * 430 * dst for a '\0' terminator if and only if ret < osz.
456 * Even in the case of error @dst pointer will be updated to point to the byte
457 * after the last processed character.
458 */ 431 */
459int string_escape_mem(const char *src, size_t isz, char **dst, size_t osz, 432int string_escape_mem(const char *src, size_t isz, char *dst, size_t osz,
460 unsigned int flags, const char *esc) 433 unsigned int flags, const char *esc)
461{ 434{
462 char *p = *dst; 435 char *p = dst;
463 char *end = p + osz; 436 char *end = p + osz;
464 bool is_dict = esc && *esc; 437 bool is_dict = esc && *esc;
465 int ret;
466 438
467 while (isz--) { 439 while (isz--) {
468 unsigned char c = *src++; 440 unsigned char c = *src++;
@@ -502,13 +474,6 @@ int string_escape_mem(const char *src, size_t isz, char **dst, size_t osz,
502 escape_passthrough(c, &p, end); 474 escape_passthrough(c, &p, end);
503 } 475 }
504 476
505 if (p > end) { 477 return p - dst;
506 *dst = end;
507 return -ENOMEM;
508 }
509
510 ret = p - *dst;
511 *dst = p;
512 return ret;
513} 478}
514EXPORT_SYMBOL(string_escape_mem); 479EXPORT_SYMBOL(string_escape_mem);