mirror of
https://gitlab.freedesktop.org/libbsd/libbsd.git
synced 2025-01-09 19:27:42 +01:00
test: Fix short lived memory leaks
These are non-issues, but having a clean ASAN test suite makes it possible to detect actual problems in the tested code. Warned-by: gcc ASAN
This commit is contained in:
parent
cfeafeabad
commit
d5b04ab19c
@ -61,6 +61,7 @@ static const wchar_t *data_wide[] = {
|
|||||||
|
|
||||||
struct file {
|
struct file {
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
void *line_alloc;
|
||||||
const void **lines;
|
const void **lines;
|
||||||
|
|
||||||
const void *got_buf;
|
const void *got_buf;
|
||||||
@ -97,6 +98,7 @@ test_fgetln_multi(void)
|
|||||||
str = strdup("A\n");
|
str = strdup("A\n");
|
||||||
str[0] += i;
|
str[0] += i;
|
||||||
|
|
||||||
|
files[i].line_alloc = str;
|
||||||
files[i].lines = reallocarray(NULL, LINE_COUNT, sizeof(char *));
|
files[i].lines = reallocarray(NULL, LINE_COUNT, sizeof(char *));
|
||||||
files[i].lines[0] = str;
|
files[i].lines[0] = str;
|
||||||
files[i].lines[1] = str;
|
files[i].lines[1] = str;
|
||||||
@ -123,8 +125,11 @@ test_fgetln_multi(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < LINE_COUNT; i++)
|
for (i = 0; i < FILE_COUNT; i++) {
|
||||||
|
free(files[i].line_alloc);
|
||||||
|
free(files[i].lines);
|
||||||
pipe_close(files[i].fp);
|
pipe_close(files[i].fp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -159,6 +164,7 @@ test_fgetwln_multi(void)
|
|||||||
wstr = wcsdup(L"A\n");
|
wstr = wcsdup(L"A\n");
|
||||||
wstr[0] += i;
|
wstr[0] += i;
|
||||||
|
|
||||||
|
files[i].line_alloc = wstr;
|
||||||
files[i].lines = reallocarray(NULL, LINE_COUNT, sizeof(char *));
|
files[i].lines = reallocarray(NULL, LINE_COUNT, sizeof(char *));
|
||||||
files[i].lines[0] = wstr;
|
files[i].lines[0] = wstr;
|
||||||
files[i].lines[1] = wstr;
|
files[i].lines[1] = wstr;
|
||||||
@ -185,8 +191,11 @@ test_fgetwln_multi(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < LINE_COUNT; i++)
|
for (i = 0; i < FILE_COUNT; i++) {
|
||||||
|
free(files[i].line_alloc);
|
||||||
|
free(files[i].lines);
|
||||||
pipe_close(files[i].fp);
|
pipe_close(files[i].fp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -25,19 +25,31 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
int
|
int
|
||||||
main(int argc, char **argv)
|
main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
void *set;
|
||||||
|
|
||||||
umask(0);
|
umask(0);
|
||||||
|
|
||||||
assert(getmode(setmode("0"), 0) == 0);
|
set = setmode("0");
|
||||||
|
assert(getmode(set, 0) == 0);
|
||||||
|
free(set);
|
||||||
|
|
||||||
assert(getmode(setmode("7777"), 0) == 07777);
|
set = setmode("7777");
|
||||||
assert(getmode(setmode("1555"), 0) == 01555);
|
assert(getmode(set, 0) == 07777);
|
||||||
|
free(set);
|
||||||
|
|
||||||
assert(getmode(setmode("ugo=rwx"), 0) == 0777);
|
set = setmode("1555");
|
||||||
|
assert(getmode(set, 0) == 01555);
|
||||||
|
free(set);
|
||||||
|
|
||||||
|
set = setmode("ugo=rwx");
|
||||||
|
assert(getmode(set, 0) == 0777);
|
||||||
|
free(set);
|
||||||
|
|
||||||
/* FIXME: Complete unit tests. */
|
/* FIXME: Complete unit tests. */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user