Blame src/regression/flockfile-list.c

Szabolcs Nagy 50ab48
// commit: 3e936ce81bbbcc968f576aedbd5203621839f152 2014-09-19
Szabolcs Nagy 50ab48
// flockfile linked list handling was broken
Szabolcs Nagy 50ab48
#include <errno.h>
Szabolcs Nagy 50ab48
#include <stdio.h>
Szabolcs Nagy 50ab48
#include <stdlib.h>
Szabolcs Nagy 50ab48
#include <string.h>
Szabolcs Nagy 50ab48
#include "test.h"
Szabolcs Nagy 50ab48
Szabolcs Nagy 50ab48
int main()
Szabolcs Nagy 50ab48
{
Szabolcs Nagy 50ab48
	FILE *f = tmpfile();
Szabolcs Nagy 50ab48
	FILE *g = tmpfile();
Szabolcs Nagy 50ab48
	flockfile(g);
Szabolcs Nagy 50ab48
	flockfile(f);
Szabolcs Nagy 50ab48
	funlockfile(g);
Szabolcs Nagy 50ab48
	fclose(g);
Szabolcs Nagy 50ab48
Szabolcs Nagy 50ab48
	/* fill memory */
Szabolcs Nagy 50ab48
	if (t_vmfill(0,0,0) < 0)
Szabolcs Nagy 50ab48
		t_error("vmfill failed: %s\n", strerror(errno));
Szabolcs Nagy 50ab48
	size_t i,n;
Szabolcs Nagy 50ab48
	unsigned char *p;
Szabolcs Nagy 50ab48
	for (n = 1; n < 10000; n++) {
Szabolcs Nagy 50ab48
		if (!(p=malloc(n))) break;
Szabolcs Nagy 50ab48
		free(p);
Szabolcs Nagy 50ab48
	}
Szabolcs Nagy 50ab48
	n--;
Szabolcs Nagy 50ab48
	if (!(p=malloc(n))) {
Szabolcs Nagy 50ab48
		t_error("bad malloc fragmentation\n");
Szabolcs Nagy 50ab48
		return t_status;
Szabolcs Nagy 50ab48
	}
Szabolcs Nagy 50ab48
	memset(p, 0xff, n);
Szabolcs Nagy 50ab48
Szabolcs Nagy 50ab48
	/* may corrupt memory */
Szabolcs Nagy 50ab48
	funlockfile(f);
Szabolcs Nagy 50ab48
	for (i=0; i
Szabolcs Nagy 50ab48
		if (p[i]!=0xff) {
Szabolcs Nagy 50ab48
			t_error("p[%zu] = %.2x\n", i, p[i]);
Szabolcs Nagy 50ab48
		}
Szabolcs Nagy 50ab48
	}
Szabolcs Nagy 50ab48
	return t_status;
Szabolcs Nagy 50ab48
}