bambi6-service-postit

Simple Note-Taking A/D Service for BambiCTF6 in 2021
git clone https://git.sinitax.com/sinitax/bambi6-service-postit
Log | Files | Refs | README | LICENSE | sfeed.txt

util.c (939B)


      1#include "util.h"
      2
      3int
      4is_numstr(const char *str)
      5{
      6	int i;
      7
      8	if (!*str) return 0;
      9
     10	for (i = 0; str[i]; i++) {
     11		if (str[i] < '0' || str[i] > '9')
     12			return 0;
     13	}
     14
     15	return 1;
     16}
     17
     18char*
     19randstr(int n)
     20{
     21	const char alphabet[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
     22		"abcdefghijklmnopqrstuvwxyz0123456789";
     23	char *msg;
     24	int i;
     25
     26	srand(time(NULL));
     27
     28	msg = malloc(n + 1);
     29	ASSERT(msg != NULL);
     30
     31	for (i = 0; i < n; i++)
     32		msg[i] = alphabet[rand() % (ARRSIZE(alphabet)-1)];
     33	msg[n] = '\0';
     34
     35	return msg;
     36}
     37
     38void
     39assert(int res, const char *fmtstr, ...)
     40{
     41	va_list ap;
     42
     43	if (!res) {
     44		va_start(ap, fmtstr);
     45		vfprintf(stderr, fmtstr, ap);
     46		va_end(ap);
     47		exit(1);
     48	}
     49}
     50
     51char*
     52ask(const char *fmtstr, ...)
     53{
     54	static char buf[2048];
     55	va_list ap;
     56	char *tok;
     57
     58	va_start(ap, fmtstr);
     59	vprintf(fmtstr, ap);
     60	va_end(ap);
     61
     62	if (fgets(buf, ARRSIZE(buf), stdin)) {
     63		tok = strchr(buf, '\n');
     64		if (tok) *tok = '\0';
     65	} else {
     66		*buf = '\0';
     67	}
     68
     69	return buf;
     70}