Пример #1
0
Файл: proc.c Проект: regit/nufw
const char *prg_cache_getsig(int algo, unsigned long inode)
{
	unsigned hi = PRG_HASHIT(inode);
	struct prg_node *pn;
	size_t size;
	unsigned char pnsig[4 * NUSSL_HASH_MAX_SIZE];
	int ret;

#define SHA512_PREFIX "{SHA512}"

	for (pn = prg_hash[hi]; pn; pn = pn->next) {
		if (pn->inode == inode) {
			if (pn->sig[0] == 0) {
				char * hexnum;
				ret = nussl_hash_file(algo, pn->name,
						pnsig, &size);
				if (ret == 0) {
					hexnum = pn->sig + strlen(SHA512_PREFIX);
					memcpy(pn->sig, SHA512_PREFIX, strlen(SHA512_PREFIX));
					bin2hex(size, pnsig, hexnum);
				} else {
					pn->sig[0] = '\0';
				}
			}
			return (pn->sig);
		}
	}
	return "-";
}
Пример #2
0
static const char *prg_cache_get(int inode)
{
    unsigned hi=PRG_HASHIT(inode);
    struct prg_node *pn;

    for (pn=prg_hash[hi];pn;pn=pn->next)
	if (pn->inode==inode) return(pn->name);
    return("-");
}
Пример #3
0
static void prg_cache_add(int inode, char *name)
{
    unsigned hi = PRG_HASHIT(inode);
    struct prg_node **pnp,*pn;

    prg_cache_loaded=2;
    for (pnp=prg_hash+hi;(pn=*pnp);pnp=&pn->next) {
	if (pn->inode==inode) {
	    /* Some warning should be appropriate here
	       as we got multiple processes for one i-node */
	    return;
	}
    }
    if (!(*pnp=malloc(sizeof(**pnp)))) 
	return;
    pn=*pnp;
    pn->next=NULL;
    pn->inode=inode;
    if (strlen(name)>sizeof(pn->name)-1) 
	name[sizeof(pn->name)-1]='\0';
    strcpy(pn->name,name);
}
Пример #4
0
Файл: proc.c Проект: regit/nufw
static void prg_cache_add(unsigned long inode, char *name)
{
	unsigned hi = PRG_HASHIT(inode);
	struct prg_node **pnp, *pn;

	prg_cache_loaded = 2;
	for (pnp = prg_hash + hi; (pn = *pnp); pnp = &pn->next) {
		if (pn->inode == inode) {
			/* Some warning should be appropriate here
			   as we got multiple processes for one i-node */
			return;
		}
	}
	*pnp = malloc(sizeof(**pnp));
	if (*pnp == NULL)
		return;
	pn = *pnp;
	pn->next = NULL;
	pn->inode = inode;
	SECURE_STRNCPY(pn->name, name, sizeof(pn->name));
	pn->sig[0] = 0;
}