Commit 0aae22e9 authored by Pierre Ynard's avatar Pierre Ynard

lua intf: don't print passwords in the logs

This is evil!
(cherry picked from commit 6857923a03d769295dd98135ea6d35dbbaec925f)
Signed-off-by: default avatarPierre Ynard <linkfanel@yahoo.fr>
parent c855e2fa
...@@ -128,6 +128,58 @@ static char *GetModuleName( intf_thread_t *p_intf ) ...@@ -128,6 +128,58 @@ static char *GetModuleName( intf_thread_t *p_intf )
return var_CreateGetString( p_intf, "lua-intf" ); return var_CreateGetString( p_intf, "lua-intf" );
} }
static char *StripPasswords( const char *psz_config )
{
unsigned n = 0;
const char *p = psz_config;
while ((p = strstr(p, "password=")) != NULL)
{
n++;
p++;
}
if (n == 0)
return strdup(psz_config);
char *psz_log = malloc(strlen(psz_config) + n * strlen("******") + 1);
if (psz_log == NULL)
return NULL;
psz_log[0] = '\0';
for (p = psz_config; ; )
{
const char *pwd = strstr(p, "password=");
if (pwd == NULL)
{
/* Copy the last, ending bit */
strcat(psz_log, p);
break;
}
pwd += strlen("password=");
char delim[3] = ",}";
if (*pwd == '\'' || *pwd == '"')
{
delim[0] = *pwd++;
delim[1] = '\0';
}
strncat(psz_log, p, pwd - p);
strcat(psz_log, "******");
/* Advance to the delimiter at the end of the password */
p = pwd - 1;
do
{
p = strpbrk(p + 1, delim);
if (p == NULL)
/* Oops, unbalanced quotes or brackets */
return psz_log;
}
while (*(p - 1) == '\\');
}
return psz_log;
}
static const luaL_Reg p_reg[] = { { NULL, NULL } }; static const luaL_Reg p_reg[] = { { NULL, NULL } };
int Open_LuaIntf( vlc_object_t *p_this ) int Open_LuaIntf( vlc_object_t *p_this )
...@@ -306,7 +358,13 @@ int Open_LuaIntf( vlc_object_t *p_this ) ...@@ -306,7 +358,13 @@ int Open_LuaIntf( vlc_object_t *p_this )
char *psz_buffer; char *psz_buffer;
if( asprintf( &psz_buffer, "config={%s}", psz_config ) != -1 ) if( asprintf( &psz_buffer, "config={%s}", psz_config ) != -1 )
{ {
msg_Dbg( p_intf, "Setting config variable: %s", psz_buffer ); char *psz_log = StripPasswords( psz_buffer );
if( psz_log != NULL )
{
msg_Dbg( p_intf, "Setting config variable: %s", psz_log );
free( psz_log );
}
if( luaL_dostring( L, psz_buffer ) == 1 ) if( luaL_dostring( L, psz_buffer ) == 1 )
msg_Err( p_intf, "Error while parsing \"lua-config\"." ); msg_Err( p_intf, "Error while parsing \"lua-config\"." );
free( psz_buffer ); free( psz_buffer );
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment