All pastes #246958 Raw Edit

Miscellany

public text v1 · immutable
#246958 ·published 2006-11-12 21:55 UTC
rendered paste body
__attribute__ ((visibility ("default")))
FILE *fopen(const char *path, const char *mode) {
	static FILE *(*orig_fopen)(const char *path, const char *mode) = NULL;
	if (!orig_fopen)
		orig_fopen = dlsym(RTLD_NEXT, "fopen");

	// Sanity check
	if (!sethET)
		return orig_fopen(path, mode);

	unsigned int caller = (unsigned int)__builtin_return_address(0); // return address of calling function

	// return NULL if the caller is not et.x86 and the file is eth's library\pk3
	if (((caller < seth.textSectionStart) || (caller > seth.textSectionEnd))
			&& (strstr(path, ETH_PK3_FILE) || strstr(path, "libETH") || strstr(path, ".sh")))
		return NULL;

	return orig_fopen(path, mode);
}