fclose(fh);
- memset(line, 0, sizeof line);
- memset(pass2, 0, sizeof pass2);
+ force_memzero(line, sizeof line);
+ force_memzero(pass2, sizeof pass2);
return err;
}
err = check_secret(module, line, group, challenge, pass);
}
- memset(challenge, 0, sizeof challenge);
- memset(pass, 0, strlen(pass));
+ force_memzero(challenge, sizeof challenge);
+ force_memzero(pass, strlen(pass));
if (auth_uid_groups) {
int j;
map->p = NULL;
}
ret = map->status;
- memset(map, 0, sizeof map[0]);
+#if 0 /* I don't think we really need this. */
+ force_memzero(map, sizeof map[0]);
+#endif
free(map);
return ret;
}
return (char*)lp->items + (lp->count++ * item_size);
}
+
+/* This zeroing of memory won't be optimized away by the compiler. */
+void force_memzero(void *buf, size_t len)
+{
+ volatile uchar *z = buf;
+ while (len-- > 0)
+ *z++ = '\0';
+}