Skip to content
Snippets Groups Projects
Commit 61d874af authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

reimplementation of sb_max_incoming

parent a2fe43da
No related branches found
No related tags found
No related merge requests found
......@@ -131,8 +131,10 @@ typedef struct lber_memory_fns {
#define LBER_SB_OPT_DRAIN 10
#define LBER_SB_OPT_NEEDS_READ 11
#define LBER_SB_OPT_NEEDS_WRITE 12
#define LBER_SB_OPT_GET_MAX_INCOMING 13
#define LBER_SB_OPT_SET_MAX_INCOMING 14
/* Largest option used by the library */
#define LBER_SB_OPT_OPT_MAX 12
#define LBER_SB_OPT_OPT_MAX 14
/* LBER IO operations stacking levels */
#define LBER_SBIOD_LEVEL_PROVIDER 10
......
......@@ -285,6 +285,7 @@ typedef struct ldapcontrol {
/* sasl methods */
#define LDAP_SASL_SIMPLE ((char*)0)
#define LDAP_SASL_NULL ("")
/* authentication methods available */
......
......@@ -546,10 +546,15 @@ get_lenbyte:
fill_buffer:
/* now fill the buffer. */
if (ber->ber_len==0) {
/* make sure length is reasonable */
if ( ber->ber_len == 0 ||
( sb->sb_max_incoming && ber->ber_len > sb->sb_max_incoming ))
{
errno = ERANGE;
return LBER_DEFAULT;
}
if (ber->ber_buf==NULL) {
ber->ber_buf = (char *) LBER_MALLOC( ber->ber_len );
if (ber->ber_buf==NULL) {
......
......@@ -87,6 +87,7 @@ struct sockbuf {
ber_socket_t sb_fd;
unsigned int sb_trans_needs_read:1;
unsigned int sb_trans_needs_write:1;
ber_len_t sb_max_incoming;
};
#define SOCKBUF_VALID( sb ) ( (sb)->sb_valid == LBER_VALID_SOCKBUF )
......
......@@ -73,6 +73,7 @@ ber_sockbuf_ctrl( Sockbuf *sb, int opt, void *arg )
int ret = 0;
assert( sb != NULL );
assert( SOCKBUF_VALID( sb ) );
switch ( opt ) {
case LBER_SB_OPT_HAS_IO:
......@@ -124,6 +125,18 @@ ber_sockbuf_ctrl( Sockbuf *sb, int opt, void *arg )
ret = ( sb->sb_trans_needs_write ? 1 : 0 );
break;
case LBER_SB_OPT_GET_MAX_INCOMING:
if ( arg != NULL ) {
*((ber_len_t *)arg) = sb->sb_max_incoming;
}
ret = 1;
break;
case LBER_SB_OPT_SET_MAX_INCOMING:
sb->sb_max_incoming = *((ber_len_t *)arg);
ret = 1;
break;
default:
ret = sb->sb_iod->sbiod_io->sbi_ctrl( sb->sb_iod,
opt, arg );
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment