mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
s3-rpc_parse: remove more unused code.
Guenther
This commit is contained in:
parent
33768fea07
commit
f982c912f4
@ -5676,32 +5676,16 @@ void prs_switch_type(prs_struct *ps, bool io);
|
||||
void prs_force_dynamic(prs_struct *ps);
|
||||
void prs_set_session_key(prs_struct *ps, const char sess_key[16]);
|
||||
bool prs_uint8(const char *name, prs_struct *ps, int depth, uint8 *data8);
|
||||
bool prs_pointer( const char *name, prs_struct *ps, int depth,
|
||||
void *dta, size_t data_size,
|
||||
bool (*prs_fn)(const char*, prs_struct*, int, void*) );
|
||||
bool prs_uint16(const char *name, prs_struct *ps, int depth, uint16 *data16);
|
||||
bool prs_uint32(const char *name, prs_struct *ps, int depth, uint32 *data32);
|
||||
bool prs_int32(const char *name, prs_struct *ps, int depth, int32 *data32);
|
||||
bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64);
|
||||
bool prs_ntstatus(const char *name, prs_struct *ps, int depth, NTSTATUS *status);
|
||||
bool prs_dcerpc_status(const char *name, prs_struct *ps, int depth, NTSTATUS *status);
|
||||
bool prs_werror(const char *name, prs_struct *ps, int depth, WERROR *status);
|
||||
bool prs_uint8s(bool charmode, const char *name, prs_struct *ps, int depth, uint8 *data8s, int len);
|
||||
bool prs_uint16s(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
|
||||
bool prs_uint16uni(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
|
||||
bool prs_uint32s(bool charmode, const char *name, prs_struct *ps, int depth, uint32 *data32s, int len);
|
||||
bool prs_unistr(const char *name, prs_struct *ps, int depth, UNISTR *str);
|
||||
bool prs_string(const char *name, prs_struct *ps, int depth, char *str, int max_buf_size);
|
||||
bool prs_string_alloc(const char *name, prs_struct *ps, int depth, const char **str);
|
||||
bool prs_uint16_pre(const char *name, prs_struct *ps, int depth, uint16 *data16, uint32 *offset);
|
||||
bool prs_uint16_post(const char *name, prs_struct *ps, int depth, uint16 *data16,
|
||||
uint32 ptr_uint16, uint32 start_offset);
|
||||
bool prs_uint32_pre(const char *name, prs_struct *ps, int depth, uint32 *data32, uint32 *offset);
|
||||
bool prs_uint32_post(const char *name, prs_struct *ps, int depth, uint32 *data32,
|
||||
uint32 ptr_uint32, uint32 data_size);
|
||||
int tdb_prs_store(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps);
|
||||
int tdb_prs_fetch(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps, TALLOC_CTX *mem_ctx);
|
||||
bool prs_hash1(prs_struct *ps, uint32 offset, int len);
|
||||
void schannel_encode(struct schannel_auth_struct *a, enum pipe_auth_level auth_level,
|
||||
enum schannel_direction direction,
|
||||
RPC_AUTH_SCHANNEL_CHK * verf,
|
||||
|
@ -636,42 +636,6 @@ bool prs_uint8(const char *name, prs_struct *ps, int depth, uint8 *data8)
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Stream a uint16* (allocate memory if unmarshalling)
|
||||
********************************************************************/
|
||||
|
||||
bool prs_pointer( const char *name, prs_struct *ps, int depth,
|
||||
void *dta, size_t data_size,
|
||||
bool (*prs_fn)(const char*, prs_struct*, int, void*) )
|
||||
{
|
||||
void ** data = (void **)dta;
|
||||
uint32 data_p;
|
||||
|
||||
/* output f000baaa to stream if the pointer is non-zero. */
|
||||
|
||||
data_p = *data ? 0xf000baaa : 0;
|
||||
|
||||
if ( !prs_uint32("ptr", ps, depth, &data_p ))
|
||||
return False;
|
||||
|
||||
/* we're done if there is no data */
|
||||
|
||||
if ( !data_p )
|
||||
return True;
|
||||
|
||||
if (UNMARSHALLING(ps)) {
|
||||
if (data_size) {
|
||||
if ( !(*data = PRS_ALLOC_MEM(ps, char, data_size)) )
|
||||
return False;
|
||||
} else {
|
||||
*data = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
return prs_fn(name, ps, depth, *data);
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Stream a uint16.
|
||||
********************************************************************/
|
||||
@ -783,36 +747,6 @@ bool prs_uint64(const char *name, prs_struct *ps, int depth, uint64 *data64)
|
||||
}
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Stream a NTSTATUS
|
||||
********************************************************************/
|
||||
|
||||
bool prs_ntstatus(const char *name, prs_struct *ps, int depth, NTSTATUS *status)
|
||||
{
|
||||
char *q = prs_mem_get(ps, sizeof(uint32));
|
||||
if (q == NULL)
|
||||
return False;
|
||||
|
||||
if (UNMARSHALLING(ps)) {
|
||||
if (ps->bigendian_data)
|
||||
*status = NT_STATUS(RIVAL(q,0));
|
||||
else
|
||||
*status = NT_STATUS(IVAL(q,0));
|
||||
} else {
|
||||
if (ps->bigendian_data)
|
||||
RSIVAL(q,0,NT_STATUS_V(*status));
|
||||
else
|
||||
SIVAL(q,0,NT_STATUS_V(*status));
|
||||
}
|
||||
|
||||
DEBUGADD(5,("%s%04x %s: %s\n", tab_depth(5,depth), ps->data_offset, name,
|
||||
nt_errstr(*status)));
|
||||
|
||||
ps->data_offset += sizeof(uint32);
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Stream a DCE error code
|
||||
********************************************************************/
|
||||
@ -843,38 +777,6 @@ bool prs_dcerpc_status(const char *name, prs_struct *ps, int depth, NTSTATUS *st
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
/*******************************************************************
|
||||
Stream a WERROR
|
||||
********************************************************************/
|
||||
|
||||
bool prs_werror(const char *name, prs_struct *ps, int depth, WERROR *status)
|
||||
{
|
||||
char *q = prs_mem_get(ps, sizeof(uint32));
|
||||
if (q == NULL)
|
||||
return False;
|
||||
|
||||
if (UNMARSHALLING(ps)) {
|
||||
if (ps->bigendian_data)
|
||||
*status = W_ERROR(RIVAL(q,0));
|
||||
else
|
||||
*status = W_ERROR(IVAL(q,0));
|
||||
} else {
|
||||
if (ps->bigendian_data)
|
||||
RSIVAL(q,0,W_ERROR_V(*status));
|
||||
else
|
||||
SIVAL(q,0,W_ERROR_V(*status));
|
||||
}
|
||||
|
||||
DEBUGADD(5,("%s%04x %s: %s\n", tab_depth(5,depth), ps->data_offset, name,
|
||||
win_errstr(*status)));
|
||||
|
||||
ps->data_offset += sizeof(uint32);
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
/******************************************************************
|
||||
Stream an array of uint8s. Length is number of uint8s.
|
||||
********************************************************************/
|
||||
@ -951,60 +853,6 @@ bool prs_uint16s(bool charmode, const char *name, prs_struct *ps, int depth, uin
|
||||
return True;
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
Start using a function for streaming unicode chars. If unmarshalling,
|
||||
output must be little-endian, if marshalling, input must be little-endian.
|
||||
********************************************************************/
|
||||
|
||||
static void dbg_rw_punival(bool charmode, const char *name, int depth, prs_struct *ps,
|
||||
char *in_buf, char *out_buf, int len)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (UNMARSHALLING(ps)) {
|
||||
if (ps->bigendian_data) {
|
||||
for (i = 0; i < len; i++)
|
||||
SSVAL(out_buf,2*i,RSVAL(in_buf, 2*i));
|
||||
} else {
|
||||
for (i = 0; i < len; i++)
|
||||
SSVAL(out_buf, 2*i, SVAL(in_buf, 2*i));
|
||||
}
|
||||
} else {
|
||||
if (ps->bigendian_data) {
|
||||
for (i = 0; i < len; i++)
|
||||
RSSVAL(in_buf, 2*i, SVAL(out_buf,2*i));
|
||||
} else {
|
||||
for (i = 0; i < len; i++)
|
||||
SSVAL(in_buf, 2*i, SVAL(out_buf,2*i));
|
||||
}
|
||||
}
|
||||
|
||||
DEBUGADD(5,("%s%04x %s: ", tab_depth(5,depth), ps->data_offset, name));
|
||||
if (charmode)
|
||||
print_asc(5, (unsigned char*)out_buf, 2*len);
|
||||
else {
|
||||
for (i = 0; i < len; i++)
|
||||
DEBUGADD(5,("%04x ", out_buf[i]));
|
||||
}
|
||||
DEBUGADD(5,("\n"));
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
Stream a unistr. Always little endian.
|
||||
********************************************************************/
|
||||
|
||||
bool prs_uint16uni(bool charmode, const char *name, prs_struct *ps, int depth, uint16 *data16s, int len)
|
||||
{
|
||||
char *q = prs_mem_get(ps, len * sizeof(uint16));
|
||||
if (q == NULL)
|
||||
return False;
|
||||
|
||||
dbg_rw_punival(charmode, name, depth, ps, q, (char *)data16s, len);
|
||||
ps->data_offset += (len * sizeof(uint16));
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/******************************************************************
|
||||
Stream an array of uint32s. Length is number of uint32s.
|
||||
********************************************************************/
|
||||
@ -1216,172 +1064,6 @@ bool prs_string(const char *name, prs_struct *ps, int depth, char *str, int max_
|
||||
return True;
|
||||
}
|
||||
|
||||
bool prs_string_alloc(const char *name, prs_struct *ps, int depth, const char **str)
|
||||
{
|
||||
size_t len;
|
||||
char *tmp_str;
|
||||
|
||||
if (UNMARSHALLING(ps)) {
|
||||
len = strlen(&ps->data_p[ps->data_offset]);
|
||||
} else {
|
||||
len = strlen(*str);
|
||||
}
|
||||
|
||||
tmp_str = PRS_ALLOC_MEM(ps, char, len+1);
|
||||
|
||||
if (tmp_str == NULL) {
|
||||
return False;
|
||||
}
|
||||
|
||||
if (MARSHALLING(ps)) {
|
||||
strncpy(tmp_str, *str, len);
|
||||
}
|
||||
|
||||
if (!prs_string(name, ps, depth, tmp_str, len+1)) {
|
||||
return False;
|
||||
}
|
||||
|
||||
*str = tmp_str;
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
prs_uint16 wrapper. Call this and it sets up a pointer to where the
|
||||
uint16 should be stored, or gets the size if reading.
|
||||
********************************************************************/
|
||||
|
||||
bool prs_uint16_pre(const char *name, prs_struct *ps, int depth, uint16 *data16, uint32 *offset)
|
||||
{
|
||||
*offset = ps->data_offset;
|
||||
if (UNMARSHALLING(ps)) {
|
||||
/* reading. */
|
||||
return prs_uint16(name, ps, depth, data16);
|
||||
} else {
|
||||
char *q = prs_mem_get(ps, sizeof(uint16));
|
||||
if(q ==NULL)
|
||||
return False;
|
||||
ps->data_offset += sizeof(uint16);
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
prs_uint16 wrapper. call this and it retrospectively stores the size.
|
||||
does nothing on reading, as that is already handled by ...._pre()
|
||||
********************************************************************/
|
||||
|
||||
bool prs_uint16_post(const char *name, prs_struct *ps, int depth, uint16 *data16,
|
||||
uint32 ptr_uint16, uint32 start_offset)
|
||||
{
|
||||
if (MARSHALLING(ps)) {
|
||||
/*
|
||||
* Writing - temporarily move the offset pointer.
|
||||
*/
|
||||
uint16 data_size = ps->data_offset - start_offset;
|
||||
uint32 old_offset = ps->data_offset;
|
||||
|
||||
ps->data_offset = ptr_uint16;
|
||||
if(!prs_uint16(name, ps, depth, &data_size)) {
|
||||
ps->data_offset = old_offset;
|
||||
return False;
|
||||
}
|
||||
ps->data_offset = old_offset;
|
||||
} else {
|
||||
ps->data_offset = start_offset + (uint32)(*data16);
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
prs_uint32 wrapper. Call this and it sets up a pointer to where the
|
||||
uint32 should be stored, or gets the size if reading.
|
||||
********************************************************************/
|
||||
|
||||
bool prs_uint32_pre(const char *name, prs_struct *ps, int depth, uint32 *data32, uint32 *offset)
|
||||
{
|
||||
*offset = ps->data_offset;
|
||||
if (UNMARSHALLING(ps) && (data32 != NULL)) {
|
||||
/* reading. */
|
||||
return prs_uint32(name, ps, depth, data32);
|
||||
} else {
|
||||
ps->data_offset += sizeof(uint32);
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
prs_uint32 wrapper. call this and it retrospectively stores the size.
|
||||
does nothing on reading, as that is already handled by ...._pre()
|
||||
********************************************************************/
|
||||
|
||||
bool prs_uint32_post(const char *name, prs_struct *ps, int depth, uint32 *data32,
|
||||
uint32 ptr_uint32, uint32 data_size)
|
||||
{
|
||||
if (MARSHALLING(ps)) {
|
||||
/*
|
||||
* Writing - temporarily move the offset pointer.
|
||||
*/
|
||||
uint32 old_offset = ps->data_offset;
|
||||
ps->data_offset = ptr_uint32;
|
||||
if(!prs_uint32(name, ps, depth, &data_size)) {
|
||||
ps->data_offset = old_offset;
|
||||
return False;
|
||||
}
|
||||
ps->data_offset = old_offset;
|
||||
}
|
||||
return True;
|
||||
}
|
||||
|
||||
/* useful function to store a structure in rpc wire format */
|
||||
int tdb_prs_store(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps)
|
||||
{
|
||||
TDB_DATA dbuf;
|
||||
dbuf.dptr = (uint8 *)ps->data_p;
|
||||
dbuf.dsize = prs_offset(ps);
|
||||
return tdb_trans_store(tdb, kbuf, dbuf, TDB_REPLACE);
|
||||
}
|
||||
|
||||
/* useful function to fetch a structure into rpc wire format */
|
||||
int tdb_prs_fetch(TDB_CONTEXT *tdb, TDB_DATA kbuf, prs_struct *ps, TALLOC_CTX *mem_ctx)
|
||||
{
|
||||
TDB_DATA dbuf;
|
||||
|
||||
prs_init_empty(ps, mem_ctx, UNMARSHALL);
|
||||
|
||||
dbuf = tdb_fetch(tdb, kbuf);
|
||||
if (!dbuf.dptr)
|
||||
return -1;
|
||||
|
||||
prs_give_memory(ps, (char *)dbuf.dptr, dbuf.dsize, True);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
hash a stream.
|
||||
********************************************************************/
|
||||
|
||||
bool prs_hash1(prs_struct *ps, uint32 offset, int len)
|
||||
{
|
||||
char *q;
|
||||
|
||||
q = ps->data_p;
|
||||
q = &q[offset];
|
||||
|
||||
#ifdef DEBUG_PASSWORD
|
||||
DEBUG(100, ("prs_hash1\n"));
|
||||
dump_data(100, (uint8 *)ps->sess_key, 16);
|
||||
dump_data(100, (uint8 *)q, len);
|
||||
#endif
|
||||
arcfour_crypt((uchar *) q, (const unsigned char *)ps->sess_key, len);
|
||||
|
||||
#ifdef DEBUG_PASSWORD
|
||||
dump_data(100, (uint8 *)q, len);
|
||||
#endif
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Create a digest over the entire packet (including the data), and
|
||||
MD5 it with the session key.
|
||||
|
Loading…
Reference in New Issue
Block a user