diff --git a/Makefile b/Makefile index 90ccfe1..d7026c5 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,9 @@ # $OpenBSD:$ -SUBDIR= ssh regress unittests +.if defined(LEAKMALLOC) +SUBDIR= leakmalloc ssh unittests +.else +SUBDIR= ssh unittests regress +.endif .include diff --git a/leakmalloc/Makefile b/leakmalloc/Makefile new file mode 100644 index 0000000..529d5e7 --- /dev/null +++ b/leakmalloc/Makefile @@ -0,0 +1,5 @@ +# $OpenBSD:$ + +SUBDIR= leakmalloc regress + +.include diff --git a/leakmalloc/regress/Makefile b/leakmalloc/regress/Makefile index 491715c..2f63f53 100644 --- a/leakmalloc/regress/Makefile +++ b/leakmalloc/regress/Makefile @@ -51,7 +51,7 @@ summary: ${PROG} grep "^Total:" | cut -d' ' -f 2` -eq 22 clean: - rm ${PROG} *.o *.core leakmalloc.out + rm -f ${PROG} *.o *.core leakmalloc.out .include diff --git a/ssh/Makefile.inc b/ssh/Makefile.inc index 489817c..d53fed6 100644 --- a/ssh/Makefile.inc +++ b/ssh/Makefile.inc @@ -8,7 +8,6 @@ WARNINGS=Yes CDIAGFLAGS= -Wall CDIAGFLAGS+= -Werror CDIAGFLAGS+= -Wpointer-arith -CDIAGFLAGS+= -Wuninitialized CDIAGFLAGS+= -Wstrict-prototypes CDIAGFLAGS+= -Wmissing-prototypes CDIAGFLAGS+= -Wunused @@ -39,3 +38,22 @@ DPADD+= ${.CURDIR}/../lib/shlib_version LDADD+= -lcrypto -lz DPADD+= ${LIBCRYPTO} ${LIBZ} .endif + +.if defined(LEAKMALLOC) +DEBUG= -g +COPTS= -O0 +LEAKMALLOC_DIR= ${.CURDIR}/../../leakmalloc/leakmalloc +CFLAGS+= -I${LEAKMALLOC_DIR} -DWITH_LEAKMALLOC +LDFLAGS+= -L/usr/local/lib +LDADD+= -lleakmalloc -lexecinfo +. if exists(${LEAKMALLOC_DIR}/${__objdir}) +LDADD+= -L${LEAKMALLOC_DIR}/${__objdir} +DPADD+= ${LEAKMALLOC_DIR}/${__objdir}/libleakmalloc.a +. else +LDADD+= -L${LEAKMALLOC_DIR} +DPADD+= ${LEAKMALLOC_DIR}/libleakmalloc.a +. endif +.else +CDIAGFLAGS+= -Wuninitialized +.endif + diff --git a/ssh/authfile.h b/ssh/authfile.h index ff7d329..b64b536 100644 --- a/ssh/authfile.h +++ b/ssh/authfile.h @@ -15,6 +15,10 @@ #ifndef AUTHFILE_H #define AUTHFILE_H +#ifdef WITH_LEAKMALLOC +#include "leakmalloc.h" +#endif + struct sshbuf; struct sshkey; diff --git a/ssh/kex.h b/ssh/kex.h index bb45561..9835fb8 100644 --- a/ssh/kex.h +++ b/ssh/kex.h @@ -30,6 +30,9 @@ #include #include "mac.h" +#ifdef WITH_LEAKMALLOC +#include "leakmalloc.h" +#endif #define KEX_COOKIE_LEN 16 diff --git a/ssh/key.h b/ssh/key.h index 0d2b8fa..055174b 100644 --- a/ssh/key.h +++ b/ssh/key.h @@ -32,6 +32,10 @@ #include #include +#ifdef WITH_LEAKMALLOC +#include "leakmalloc.h" +#endif + #define SSH_RSA_MINIMUM_MODULUS_SIZE 768 /* XXX compat, remove when we can */ diff --git a/ssh/sshbuf.h b/ssh/sshbuf.h index c805f0b..0927f08 100644 --- a/ssh/sshbuf.h +++ b/ssh/sshbuf.h @@ -23,6 +23,10 @@ #include #include +#ifdef WITH_LEAKMALLOC +#include "leakmalloc.h" +#endif + #define SSHBUF_SIZE_MAX 0x20000000 /* Hard maximum size */ #define SSHBUF_MAX_BIGNUM (8192 / 8) /* Max bignum *bytes* */ #define SSHBUF_MAX_ECPOINT ((528 * 2 / 8) + 1) /* Max EC point *bytes* */ diff --git a/unittests/Makefile.inc b/unittests/Makefile.inc index 8411b3b..d2b8da3 100644 --- a/unittests/Makefile.inc +++ b/unittests/Makefile.inc @@ -6,11 +6,9 @@ CDIAGFLAGS= -Wall CDIAGFLAGS+= -Werror CDIAGFLAGS+= -Wpointer-arith -CDIAGFLAGS+= -Wuninitialized CDIAGFLAGS+= -Wstrict-prototypes CDIAGFLAGS+= -Wmissing-prototypes CDIAGFLAGS+= -Wunused -CDIAGFLAGS+= -Wuninitialized CDIAGFLAGS+= -Wsign-compare CDIAGFLAGS+= -Wshadow CDIAGFLAGS+= -Wformat @@ -40,3 +38,22 @@ DPADD+=${.CURDIR}/../../ssh/lib/libssh.a LDADD+= -lcrypto DPADD+= ${LIBCRYPTO} + +.if defined(LEAKMALLOC) +DEBUG= -g +COPTS= -O0 +LEAKMALLOC_DIR= ${.CURDIR}/../../leakmalloc/leakmalloc +CFLAGS+= -I${LEAKMALLOC_DIR} -DWITH_LEAKMALLOC +LDFLAGS+= -L/usr/local/lib +LDADD+= -lleakmalloc -lexecinfo +. if exists(${LEAKMALLOC_DIR}/${__objdir}) +LDADD+= -L${LEAKMALLOC_DIR}/${__objdir} +DPADD+= ${LEAKMALLOC_DIR}/${__objdir}/libleakmalloc.a +. else +LDADD+= -L${LEAKMALLOC_DIR} +DPADD+= ${LEAKMALLOC_DIR}/libleakmalloc.a +. endif +.else +CDIAGFLAGS+= -Wuninitialized +.endif +