...
| Code Block | ||
|---|---|---|
| ||
void getPassword(void) {
char pwd[64];
if (GetPassword(pwd, sizeof(pwd))) {
/* checking of password, secure operations, etc */
}
memset(pwd, 0, sizeof(pwd));
}
|
...
| Code Block | ||
|---|---|---|
| ||
void getPassword(void) {
char pwd[64];
if (retrievePassword(pwd, sizeof(pwd))) {
/*checking of password, secure operations, etc */
}
memset(pwd, 0, sizeof(pwd));
*(volatile char*)pwd= *(volatile char*)pwd;
}
|
...
| Code Block | ||
|---|---|---|
| ||
void getPassword(void) {
char pwd[64];
if (retrievePassword(pwd, sizeof(pwd))) {
/* checking of password, secure operations, etc */
}
ZeroMemory(pwd, sizeof(pwd));
}
|
...
| Code Block | ||
|---|---|---|
| ||
void getPassword(void) {
char pwd[64];
if (retrievePassword(pwd, sizeof(pwd))) {
/* checking of password, secure operations, etc */
}
SecureZeroMemory(pwd, sizeof(pwd));
}
|
...
| Code Block | ||
|---|---|---|
| ||
void getPassword(void) {
char pwd[64];
if (retrievePassword(pwd, sizeof(pwd))) {
/* checking of password, secure operations, etc */
}
#pragma optimize("", off)
memset(pwd, 0, sizeof(pwd));
#pragma optimize("", on)
}
|
...
| Code Block | ||
|---|---|---|
| ||
/* memset_s.c */
void *memset_s(void *v, int c, size_t n) {
volatile char *p = v;
while (n--)
*p++ = c;
return v;
}
/* getPassword.c */
extern void *memset_s(void *v, int c, size_t n);
void getPassword(void) {
char pwd[64];
if (retrievePassword(pwd, sizeof(pwd))) {
/*checking of password, secure operations, etc */
}
pwd = memset_s(pwd, 0, sizeof(pwd));
}
|
...