diff options
author | corvid <corvid@lavabit.com> | 2011-09-29 15:59:46 +0000 |
---|---|---|
committer | corvid <corvid@lavabit.com> | 2011-09-29 15:59:46 +0000 |
commit | 68c04d3d540722a7fc54d17d6c6571d77d6ff108 (patch) | |
tree | 3f706caf4799db02b6ede7c5d581da5741687206 /dlib | |
parent | 50ec4b32c530a6a4b48ff8b1bbe6be4d01c2f009 (diff) |
password shredding
Justus had written a patch for this, but the list archive didn't want to
disgorge it, so I wrote one.
Diffstat (limited to 'dlib')
-rw-r--r-- | dlib/dlib.c | 18 | ||||
-rw-r--r-- | dlib/dlib.h | 2 |
2 files changed, 20 insertions, 0 deletions
diff --git a/dlib/dlib.c b/dlib/dlib.c index f2ef2dd1..a3c59060 100644 --- a/dlib/dlib.c +++ b/dlib/dlib.c @@ -134,6 +134,15 @@ char *dStrstrip(char *s) } /* + * Clear the contents of the string + */ +void dStrshred(char *s) +{ + if (s) + memset(s, 0, strlen(s)); +} + +/* * Return a new string of length 'len' filled with 'c' characters */ char *dStrnfill(size_t len, char c) @@ -336,6 +345,15 @@ void dStr_truncate (Dstr *ds, int len) } /* + * Clear a Dstr. + */ +void dStr_shred (Dstr *ds) +{ + if (ds && ds->sz > 0) + memset(ds->str, '\0', ds->sz); +} + +/* * Erase a substring. */ void dStr_erase (Dstr *ds, int pos_0, int len) diff --git a/dlib/dlib.h b/dlib/dlib.h index ae9c7286..cd612d28 100644 --- a/dlib/dlib.h +++ b/dlib/dlib.h @@ -87,6 +87,7 @@ char *dStrstrip(char *s); char *dStrnfill(size_t len, char c); char *dStrsep(char **orig, const char *delim); char *dStristr(const char *haystack, const char *needle); +void dStrshred(char *s); /* these are in POSIX 2001. Could be implemented if a port requires it */ #define dStrcasecmp strcasecmp @@ -114,6 +115,7 @@ void dStr_append_l (Dstr *ds, const char *s, int l); void dStr_insert (Dstr *ds, int pos_0, const char *s); void dStr_insert_l (Dstr *ds, int pos_0, const char *s, int l); void dStr_truncate (Dstr *ds, int len); +void dStr_shred (Dstr *ds); void dStr_erase (Dstr *ds, int pos_0, int len); void dStr_vsprintfa (Dstr *ds, const char *format, va_list argp); void dStr_vsprintf (Dstr *ds, const char *format, va_list argp); |