1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-08 04:58:40 +03:00

s4-pipes: convert pipe names to lowercase and validate

clients may provide arbitrary names, but we only want lowercase alnum
names
This commit is contained in:
Andrew Tridgell 2009-09-18 22:58:03 -07:00
parent e9a589feac
commit 7c542406b1

View File

@ -39,6 +39,7 @@
#include "auth/credentials/credentials.h"
#include "auth/credentials/credentials_krb5.h"
#include <gssapi/gssapi.h>
#include "system/locale.h"
/* this is the private structure used to keep the state of an open
ipc$ connection. It needs to keep information about all open
@ -221,6 +222,18 @@ struct ipc_open_state {
static void ipc_open_done(struct tevent_req *subreq);
/*
check the pipename is valid
*/
static NTSTATUS validate_pipename(const char *name)
{
while (*name) {
if (!isalnum(*name)) return NT_STATUS_INVALID_PARAMETER;
name++;
}
return NT_STATUS_OK;
}
/*
open a file - used for MSRPC pipes
*/
@ -275,6 +288,12 @@ static NTSTATUS ipc_open(struct ntvfs_module_context *ntvfs,
while (fname[0] == '\\') fname++;
/* check for valid characters in name */
fname = strlower_talloc(p, fname);
status = validate_pipename(fname);
NT_STATUS_NOT_OK_RETURN(status);
p->pipe_name = talloc_asprintf(p, "\\pipe\\%s", fname);
NT_STATUS_HAVE_NO_MEMORY(p->pipe_name);