mirror of
https://codeberg.org/libreboot/lbmk.git
synced 2026-07-16 23:08:49 +02:00
util/libreboot-utils: randomisation test
to test the effectiveness of the rand function Signed-off-by: Leah Rowe <leah@libreboot.org>
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
/nvm
|
/nvm
|
||||||
/nvmutil
|
/nvmutil
|
||||||
/mkhtemp
|
/mkhtemp
|
||||||
|
/lottery
|
||||||
*.bin
|
*.bin
|
||||||
*.o
|
*.o
|
||||||
*.d
|
*.d
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ HELLFLAGS = $(STRICT) -Weverything
|
|||||||
|
|
||||||
PROG = nvmutil
|
PROG = nvmutil
|
||||||
PROGMKH = mkhtemp
|
PROGMKH = mkhtemp
|
||||||
|
PROGLOT = lottery
|
||||||
|
|
||||||
OBJS_NVMUTIL = \
|
OBJS_NVMUTIL = \
|
||||||
obj/nvmutil.o \
|
obj/nvmutil.o \
|
||||||
@@ -48,11 +49,19 @@ OBJS_MKHTEMP = \
|
|||||||
obj/lib/mkhtemp.o \
|
obj/lib/mkhtemp.o \
|
||||||
obj/lib/rand.o
|
obj/lib/rand.o
|
||||||
|
|
||||||
|
OBJS_LOTTERY = \
|
||||||
|
obj/lottery.o \
|
||||||
|
obj/lib/file.o \
|
||||||
|
obj/lib/string.o \
|
||||||
|
obj/lib/num.o \
|
||||||
|
obj/lib/mkhtemp.o \
|
||||||
|
obj/lib/rand.o
|
||||||
|
|
||||||
# default mode
|
# default mode
|
||||||
CFLAGS_MODE = $(PORTABLE)
|
CFLAGS_MODE = $(PORTABLE)
|
||||||
CC_MODE = $(CC)
|
CC_MODE = $(CC)
|
||||||
|
|
||||||
all: $(PROG) $(PROGMKH)
|
all: $(PROG) $(PROGMKH) $(PROGLOT)
|
||||||
|
|
||||||
$(PROG): $(OBJS_NVMUTIL)
|
$(PROG): $(OBJS_NVMUTIL)
|
||||||
$(CC_MODE) $(OBJS_NVMUTIL) -o $(PROG) $(LDFLAGS)
|
$(CC_MODE) $(OBJS_NVMUTIL) -o $(PROG) $(LDFLAGS)
|
||||||
@@ -60,9 +69,13 @@ $(PROG): $(OBJS_NVMUTIL)
|
|||||||
$(PROGMKH): $(OBJS_MKHTEMP)
|
$(PROGMKH): $(OBJS_MKHTEMP)
|
||||||
$(CC_MODE) $(OBJS_MKHTEMP) -o $(PROGMKH) $(LDFLAGS)
|
$(CC_MODE) $(OBJS_MKHTEMP) -o $(PROGMKH) $(LDFLAGS)
|
||||||
|
|
||||||
|
$(PROGLOT): $(OBJS_LOTTERY)
|
||||||
|
$(CC_MODE) $(OBJS_LOTTERY) -o $(PROGLOT) $(LDFLAGS)
|
||||||
|
|
||||||
# ensure obj directory exists
|
# ensure obj directory exists
|
||||||
$(OBJS_NVMUTIL): obj
|
$(OBJS_NVMUTIL): obj
|
||||||
$(OBJS_MKHTEMP): obj
|
$(OBJS_MKHTEMP): obj
|
||||||
|
$(OBJS_LOTTERY): obj
|
||||||
|
|
||||||
obj:
|
obj:
|
||||||
mkdir obj || true
|
mkdir obj || true
|
||||||
@@ -76,6 +89,9 @@ obj/nvmutil.o: nvmutil.c
|
|||||||
obj/mkhtemp.o: mkhtemp.c
|
obj/mkhtemp.o: mkhtemp.c
|
||||||
$(CC_MODE) $(CFLAGS_MODE) -c mkhtemp.c -o obj/mkhtemp.o
|
$(CC_MODE) $(CFLAGS_MODE) -c mkhtemp.c -o obj/mkhtemp.o
|
||||||
|
|
||||||
|
obj/lottery.o: lottery.c
|
||||||
|
$(CC_MODE) $(CFLAGS_MODE) -c lottery.c -o obj/lottery.o
|
||||||
|
|
||||||
# library/helper objects
|
# library/helper objects
|
||||||
|
|
||||||
obj/lib/state.o: lib/state.c
|
obj/lib/state.o: lib/state.c
|
||||||
@@ -113,19 +129,23 @@ obj/lib/rand.o: lib/rand.c
|
|||||||
|
|
||||||
# install
|
# install
|
||||||
|
|
||||||
install: $(PROG) $(PROGMKH)
|
install: $(PROG) $(PROGMKH) $(PROGLOT)
|
||||||
$(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
|
$(INSTALL) -d $(DESTDIR)$(PREFIX)/bin
|
||||||
$(INSTALL) $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
|
$(INSTALL) $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
|
||||||
chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROG)
|
chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROG)
|
||||||
$(INSTALL) $(PROGMKH) $(DESTDIR)$(PREFIX)/bin/$(PROGMKH)
|
$(INSTALL) $(PROGMKH) $(DESTDIR)$(PREFIX)/bin/$(PROGMKH)
|
||||||
chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROGMKH)
|
chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROGMKH)
|
||||||
|
$(INSTALL) $(PROGLOT) $(DESTDIR)$(PREFIX)/bin/$(PROGLOT)
|
||||||
|
chmod 755 $(DESTDIR)$(PREFIX)/bin/$(PROGLOT)
|
||||||
|
|
||||||
uninstall:
|
uninstall:
|
||||||
rm -f $(DESTDIR)$(PREFIX)/bin/$(PROG)
|
rm -f $(DESTDIR)$(PREFIX)/bin/$(PROG)
|
||||||
rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGMKH)
|
rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGMKH)
|
||||||
|
rm -f $(DESTDIR)$(PREFIX)/bin/$(PROGLOT)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(PROG) $(PROGMKH) $(OBJS_NVMUTIL) $(OBJS_MKHTEMP)
|
rm -f $(PROG) $(PROGMKH) $(OBJS_NVMUTIL) $(OBJS_MKHTEMP) \
|
||||||
|
$(OBJS_LOTTERY)
|
||||||
|
|
||||||
distclean: clean
|
distclean: clean
|
||||||
|
|
||||||
|
|||||||
@@ -388,6 +388,7 @@ void *mkrbuf(size_t n);
|
|||||||
void rset(void *buf, size_t n);
|
void rset(void *buf, size_t n);
|
||||||
void *mkrbuf(size_t n);
|
void *mkrbuf(size_t n);
|
||||||
char *mkrstr(size_t n);
|
char *mkrstr(size_t n);
|
||||||
|
int win_lottery(void);
|
||||||
|
|
||||||
/* Helper functions for command: dump
|
/* Helper functions for command: dump
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -100,17 +100,13 @@ win_lottery(void)
|
|||||||
win:
|
win:
|
||||||
free_if_null(&s1), free_if_null(&s2);
|
free_if_null(&s1), free_if_null(&s2);
|
||||||
|
|
||||||
err_no_cleanup(0, ELOTTERY,
|
printf("Congratulations! you won the errno lottery!\n");
|
||||||
"Congratulations! you won the errno lottery");
|
return 1;
|
||||||
|
|
||||||
exit(1);
|
|
||||||
return -1;
|
|
||||||
err:
|
err:
|
||||||
/* the lottery won you */
|
/* the lottery won you */
|
||||||
free_if_null(&s1), free_if_null(&s2);
|
free_if_null(&s1), free_if_null(&s2);
|
||||||
err_no_cleanup(0, EFAULT, "lottery won you");
|
err_no_cleanup(0, EFAULT, "lottery won you");
|
||||||
exit(1);
|
return 0;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
char *
|
char *
|
||||||
|
|||||||
@@ -0,0 +1,51 @@
|
|||||||
|
/* SPDX-License-Identifier: MIT
|
||||||
|
* Copyright (c) 2026 Leah Rowe <leah@libreboot.org>
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifdef __OpenBSD__
|
||||||
|
#include <sys/param.h> /* pledge(2) */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include "include/common.h"
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
#if defined(__OpenBSD__) && defined(OpenBSD)
|
||||||
|
#if (OpenBSD) >= 509
|
||||||
|
if (pledge("stdio", NULL) == -1)
|
||||||
|
err_no_cleanup(0, errno, "openbsd won it");
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (win_lottery()) {
|
||||||
|
printf("You won!");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}/*
|
||||||
|
|
||||||
|
|
||||||
|
( >:3 )
|
||||||
|
/| |\
|
||||||
|
/ \
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user