forked from enlightenment/efl
eina: fix for escapable charachters not getting escaped if it comes after '\t' or '\n'
Summary: Escaping is not happening whenever any escapable characters is coming after '\t' or '\n'. It will also fix invalid read of 1 byte which happens for string where last charachter is '\t' or '\n' like "eina\t". Test Plan: Take a string like "eina\t ". Observe space which is followed by tab is not getting escaped. Signed-off-by: Prasoon Singh <prasoon.16@samsung.com> Reviewers: shilpasingh, rajeshps, govi, cedric Reviewed By: shilpasingh Subscribers: cedric, jpeg Differential Revision: https://phab.enlightenment.org/D4847 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
07024ab6c8
commit
9c62ab525b
3
AUTHORS
3
AUTHORS
|
@ -54,7 +54,8 @@ Rajeev Ranjan (Rajeev) <rajeev.r@samsung.com> <rajeev.jnnce@gmail.com>
|
|||
Subodh Kumar <s7158.kumar@samsung.com>
|
||||
Michelle Legrand <legrand.michelle@outlook.com>
|
||||
Shilpa Singh <shilpa.singh@samsung.com> <shilpasingh.o@gmail.com>
|
||||
|
||||
Prasoon Singh <prasoonsingh16@gmail.com>
|
||||
|
||||
Eet
|
||||
---
|
||||
|
||||
|
|
|
@ -668,24 +668,27 @@ eina_str_escape(const char *str)
|
|||
{
|
||||
*d = '\\';
|
||||
d++;
|
||||
*d = *s;
|
||||
break;
|
||||
}
|
||||
case '\n':
|
||||
{
|
||||
*d = '\\'; d++;
|
||||
*d = 'n'; d++;
|
||||
s++;
|
||||
*d = 'n';
|
||||
break;
|
||||
}
|
||||
case '\t':
|
||||
{
|
||||
*d = '\\'; d++;
|
||||
*d = 't'; d++;
|
||||
s++;
|
||||
*d = 't';
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
*d = *s;
|
||||
break;
|
||||
}
|
||||
}
|
||||
*d = *s;
|
||||
}
|
||||
*d = 0;
|
||||
return s2;
|
||||
|
|
|
@ -108,6 +108,13 @@ START_TEST(str_simple)
|
|||
free(str);
|
||||
free(ret);
|
||||
|
||||
str = malloc(sizeof(char) * 4);
|
||||
strcpy(str, "a\t ");
|
||||
ret = eina_str_escape(str);
|
||||
fail_if(!eina_streq(ret, "a\\t\\ "));
|
||||
free(str);
|
||||
free(ret);
|
||||
|
||||
eina_shutdown();
|
||||
}
|
||||
END_TEST
|
||||
|
|
Loading…
Reference in New Issue