Skip to content

A bunch of safe string changes #22

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 18 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ x64/
build/
[Bb]in/
[Oo]bj/
/libsafestring.a
/objtest
/safestringtest

# MSTest test Results
[Tt]est[Rr]esult*/
Expand Down
83 changes: 55 additions & 28 deletions makefile
Original file line number Diff line number Diff line change
@@ -1,59 +1,82 @@
IDIR = include
MKDIR_P = mkdir -p
CC=gcc
CFLAGS=-I$(IDIR) -fstack-protector-strong -fPIE -fPIC -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security
LDFLAGS=-z noexecstack -z relo -z now
CFLAGS := -I${IDIR} -fstack-protector-strong -fPIE -fPIC -O2 -MMD
CFLAGS += -D_FORTIFY_SOURCE=2 -Wall -Wextra -Wformat -Wformat-security
CFLAGS += -Wmissing-prototypes -Wstrict-prototypes
LDFLAGS=-z noexecstack -z now

ODIR=obj
OTDIR=objtest
SRCDIR=safeclib
TESTDIR=unittests


_DEPS = safe_lib_errno.h safe_lib.h safe_str_lib.h safe_types.h.in safe_lib_errno.h.in safe_mem_lib.h safe_types.h

_ODEPS = mem_primitives_lib.h safeclib_private.h safe_mem_constraint.h safe_str_constraint.h

all: directories libsafestring.a safestringtest


DEPS = $(addprefix $(IDIR)/,$(_DEPS))
ODEPS = $(addprefix $(SRCDIR)/,$(_ODEPS))


_CLIB = abort_handler_s.c stpcpy_s.c strlastsame_s.c ignore_handler_s.c stpncpy_s.c strljustify_s.c memcmp16_s.c strcasecmp_s.c strncat_s.c memcmp32_s.c strcasestr_s.c strncpy_s.c memcmp_s.c strcat_s.c strnlen_s.c memcpy16_s.c strcmpfld_s.c strnterminate_s.c memcpy32_s.c strcmp_s.c strpbrk_s.c memcpy_s.c strcpyfldin_s.c strprefix_s.c memmove16_s.c strcpyfldout_s.c strremovews_s.c memmove32_s.c strcpyfld_s.c strspn_s.c memmove_s.c strcpy_s.c strstr_s.c mem_primitives_lib.c strcspn_s.c strtok_s.c strfirstchar_s.c strtolowercase_s.c memset16_s.c strfirstdiff_s.c strtouppercase_s.c memset32_s.c strfirstsame_s.c strzero_s.c memset_s.c strisalphanumeric_s.c wcpcpy_s.c memzero16_s.c strisascii_s.c wcscat_s.c memzero32_s.c strisdigit_s.c wcscpy_s.c memzero_s.c strishex_s.c wcsncat_s.c strislowercase_s.c wcsncpy_s.c safe_mem_constraint.c strismixedcase_s.c wcsnlen_s.c strispassword_s.c wmemcmp_s.c safe_str_constraint.c strisuppercase_s.c wmemcpy_s.c strlastchar_s.c wmemmove_s.c snprintf_support.c strlastdiff_s.c wmemset_s.c
.PHONY: all
all: libsafestring.a safestringtest

_CLIB := abort_handler_s.c stpcpy_s.c strlastsame_s.c ignore_handler_s.c
_CLIB += stpncpy_s.c strljustify_s.c memcmp16_s.c strcasecmp_s.c strncat_s.c
_CLIB += memcmp32_s.c strcasestr_s.c strncpy_s.c memcmp_s.c strcat_s.c
_CLIB += strnlen_s.c memcpy16_s.c strcmpfld_s.c strnterminate_s.c memcpy32_s.c
_CLIB += strcmp_s.c strpbrk_s.c memcpy_s.c strcpyfldin_s.c strprefix_s.c
_CLIB += memmove16_s.c strcpyfldout_s.c strremovews_s.c memmove32_s.c
_CLIB += strcpyfld_s.c strspn_s.c memmove_s.c strcpy_s.c strstr_s.c
_CLIB += mem_primitives_lib.c strcspn_s.c strtok_s.c strfirstchar_s.c
_CLIB += strtolowercase_s.c memset16_s.c strfirstdiff_s.c strtouppercase_s.c
_CLIB += memset32_s.c strfirstsame_s.c strzero_s.c memset_s.c
_CLIB += strisalphanumeric_s.c wcpcpy_s.c memzero16_s.c strisascii_s.c
_CLIB += wcscat_s.c memzero32_s.c strisdigit_s.c wcscpy_s.c memzero_s.c
_CLIB += strishex_s.c wcsncat_s.c strislowercase_s.c wcsncpy_s.c
_CLIB += safe_mem_constraint.c strismixedcase_s.c wcsnlen_s.c
_CLIB += strispassword_s.c wmemcmp_s.c safe_str_constraint.c
_CLIB += strisuppercase_s.c wmemcpy_s.c strlastchar_s.c wmemmove_s.c
_CLIB += snprintf_support.c strlastdiff_s.c wmemset_s.c

_TLIST = $(addprefix $(ODIR)/,$(_CLIB))
OBJ = $(patsubst %.c,%.o,$(_TLIST))
CLIB =$(addprefix $(SRCDIR)/,$(_CLIB))



$(ODIR)/%.o: $(SRCDIR)/%.c $(DEPS) $(ODEPS)
${ODIR}/%.o: ${SRCDIR}/%.c | ${ODIR}
$(CC) $(LDFLAGS) -c -o $@ $< $(CFLAGS)

libsafestring.a: $(OBJ)
ar rcs $@ $^


_TESTFUNCS = Safe_String_UnitTestMain.c test_strcmp_s.c test_strnlen_s.c test_memcmp16_s.c test_strcpyfldin_s.c test_strnterminate_s.c test_memcmp32_s.c test_strcpyfldout_s.c test_strpbrk_s.c test_memcmp_s.c test_strcpyfld_s.c test_strprefix_s.c test_memcpy16_s.c test_strcpy_s.c test_strremovews_s.c test_memcpy32_s.c test_strcspn_s.c test_strspn_s.c test_memcpy_s.c test_strfirstchar_s.c test_strstr_s.c test_memmove16_s.c test_strfirstdiff_s.c test_strtok_s.c test_memmove32_s.c test_strfirstsame_s.c test_strtolowercase_s.c test_memmove_s.c test_strisalphanumeric_s.c test_strtouppercase_s.c test_memset16_s.c test_strisascii_s.c test_strzero_s.c test_memset32_s.c test_strisdigit_s.c test_wcpcpy_s.c test_memset_s.c test_strishex_s.c test_wcscat_s.c test_memzero16_s.c test_strislowercase_s.c test_wcscpy_s.c test_memzero32_s.c test_strismixed_s.c test_wcsncat_s.c test_memzero_s.c test_strispassword_s.c test_wcsncpy_s.c test_strisuppercase_s.c test_wcsnlen_s.c test_stpcpy_s.c test_strlastchar_s.c test_wmemcmp_s.c test_stpncpy_s.c test_strlastdiff_s.c test_wmemcpy_s.c test_strcasecmp_s.c test_strlastsame_s.c test_wmemmove_s.c test_strcasestr_s.c test_strljustify_s.c test_wmemset_s.c test_strcat_s.c test_strncat_s.c test_strcmpfld_s.c test_strncpy_s.c
_TESTFUNCS := Safe_String_UnitTestMain.c test_strcmp_s.c test_strnlen_s.c
_TESTFUNCS += test_memcmp16_s.c test_strcpyfldin_s.c test_strnterminate_s.c
_TESTFUNCS += test_memcmp32_s.c test_strcpyfldout_s.c test_strpbrk_s.c
_TESTFUNCS += test_memcmp_s.c test_strcpyfld_s.c test_strprefix_s.c
_TESTFUNCS += test_memcpy16_s.c test_strcpy_s.c test_strremovews_s.c
_TESTFUNCS += test_memcpy32_s.c test_strcspn_s.c test_strspn_s.c
_TESTFUNCS += test_memcpy_s.c test_strfirstchar_s.c test_strstr_s.c
_TESTFUNCS += test_memmove16_s.c test_strfirstdiff_s.c test_strtok_s.c
_TESTFUNCS += test_memmove32_s.c test_strfirstsame_s.c test_strtolowercase_s.c
_TESTFUNCS += test_memmove_s.c test_strisalphanumeric_s.c
_TESTFUNCS += test_strtouppercase_s.c test_memset16_s.c test_strisascii_s.c
_TESTFUNCS += test_strzero_s.c test_memset32_s.c test_strisdigit_s.c
_TESTFUNCS += test_wcpcpy_s.c test_memset_s.c test_strishex_s.c test_wcscat_s.c
_TESTFUNCS += test_memzero16_s.c test_strislowercase_s.c test_wcscpy_s.c
_TESTFUNCS += test_memzero32_s.c test_strismixed_s.c test_wcsncat_s.c
_TESTFUNCS += test_memzero_s.c test_strispassword_s.c test_wcsncpy_s.c
_TESTFUNCS += test_strisuppercase_s.c test_wcsnlen_s.c test_stpcpy_s.c
_TESTFUNCS += test_strlastchar_s.c test_wmemcmp_s.c test_stpncpy_s.c
_TESTFUNCS += test_strlastdiff_s.c test_wmemcpy_s.c test_strcasecmp_s.c
_TESTFUNCS += test_strlastsame_s.c test_wmemmove_s.c test_strcasestr_s.c
_TESTFUNCS += test_strljustify_s.c test_wmemset_s.c test_strcat_s.c
_TESTFUNCS += test_strncat_s.c test_strcmpfld_s.c test_strncpy_s.c

_TLIST2 = $(addprefix $(OTDIR)/,$(_TESTFUNCS))
TOBJ = $(patsubst %.c,%.o,$(_TLIST2))
TCLIB =$(addprefix $(TESTDIR)/,$(_TESTFUNCS))


$(OTDIR)/%.o: $(TESTDIR)/%.c $(TESTDIR)/test_private.h
${OTDIR}/%.o: ${TESTDIR}/%.c ${TESTDIR}/test_private.h | ${OTDIR}
$(CC) -c -o $@ $< $(CFLAGS)


safestringtest: directories libsafestring.a $(TOBJ)
$(CC) $(LDFLAGS) -static -o $@ $(TOBJ) libsafestring.a


.PHONY: directories

directories: ${ODIR} ${OTDIR}
safestringtest: libsafestring.a $(TOBJ) | ${OTDIR}
$(CC) $(LDFLAGS) -o $@ $(TOBJ) libsafestring.a

${ODIR}:
${MKDIR_P} ${ODIR}
Expand All @@ -64,6 +87,10 @@ ${OTDIR}:
.PHONY: clean

clean:
rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~ $(OTDIR)/*.o
rm -f *~ core ${INCDIR}/*~
rm -rf ${ODIR} ${OTDIR}
rm -f libsafestring.a
rm -f safestringtest

-include $(wildcard ${ODIR}/*.d)
-include $(wildcard ${OTDIR}/*.d)
2 changes: 1 addition & 1 deletion safeclib/abort_handler_s.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@
*
*/

void abort_handler_s(const char *msg, void *ptr, errno_t error)
void abort_handler_s(const char *msg, _UNUSED void *ptr, errno_t error)
{
slprintf("ABORT CONSTRAINT HANDLER: (%u) %s\n", error,
(msg) ? msg : "Null message");
Expand Down
9 changes: 8 additions & 1 deletion safeclib/ignore_handler_s.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@

#include "safeclib_private.h"

#ifdef DEBUG
#define _DUNUSED
#else
#define _DUNUSED _UNUSED
#endif /* DEBUG */

/**
* NAME
* ignore_handler_s
Expand Down Expand Up @@ -62,7 +68,8 @@
*
*/

void ignore_handler_s(const char *msg, void *ptr, errno_t error)
void ignore_handler_s(_DUNUSED const char *msg, _UNUSED void *ptr,
_DUNUSED errno_t error)
{

sldebug_printf("IGNORE CONSTRAINT HANDLER: (%u) %s\n", error,
Expand Down
Loading