[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
ITS#2490 patch
> THIS IS A MESSAGE IN 'MIME' FORMAT. Your mail reader does not support MIME.
> Some parts of this will be readable as plain text.
> To see the rest, you will need to upgrade your mail reader.
--PART.BOUNDARY.1000.17399.mandolin.1053425528.1
Content-ID: <1000_17399_1053425528_2@mandolin>
Content-type: text/plain
Amazing how a simple 2K of plaintext diffs gets turned into a 5K binary
attachment. Stupid MS mail clients. Hopefully this message is more usable.
--PART.BOUNDARY.1000.17399.mandolin.1053425528.1
Content-ID: <1000_17399_1053425528_3@mandolin>
Content-type: text/plain
Index: io.c
===================================================================
RCS file: /repo/OpenLDAP/pkg/ldap/libraries/liblber/io.c,v
retrieving revision 1.70.2.10
diff -u -r1.70.2.10 io.c
--- io.c 26 Apr 2003 14:56:37 -0000 1.70.2.10
+++ io.c 20 May 2003 09:22:46 -0000
@@ -515,6 +515,7 @@
char buf[sizeof(ber->ber_len)-1];
ber_len_t tlen = 0;
+ errno = 0;
sblen=ber_int_sb_read( sb, ber->ber_rwptr,
((char *)&ber->ber_len + LENSIZE*2 - 1)-ber->ber_rwptr);
if (sblen<=0) return LBER_DEFAULT;
@@ -540,34 +541,44 @@
}
/* Did we run out of bytes? */
if ((char *)p == ber->ber_rwptr) {
+#if defined( EWOULDBLOCK )
+ errno = EWOULDBLOCK;
+#elif defined( EAGAIN )
+ errno = EAGAIN;
+#endif
return LBER_DEFAULT;
}
}
+ if (sblen == 1) continue;
+
ber->ber_tag = tag;
ber->ber_ptr = (char *)p;
-
- if (sblen == 1) continue;
}
/* Now look for the length */
if (*ber->ber_ptr & 0x80) { /* multi-byte */
ber_len_t i;
- int llen = *(unsigned char *)ber->ber_ptr++ & 0x7f;
+ unsigned char *p = (unsigned char *)ber->ber_ptr;
+ int llen = *p++ & 0x7f;
if (llen > (int)sizeof(ber_len_t)) {
errno = ERANGE;
return LBER_DEFAULT;
}
/* Not enough bytes? */
- if (ber->ber_rwptr - ber->ber_ptr < llen) {
+ if (ber->ber_rwptr - (char *)p < llen) {
+#if defined( EWOULDBLOCK )
+ errno = EWOULDBLOCK;
+#elif defined( EAGAIN )
+ errno = EAGAIN;
+#endif
return LBER_DEFAULT;
}
- for (i=0;
- i<llen && ber->ber_ptr<ber->ber_rwptr;
- i++,ber->ber_ptr++)
+ for (i=0; i<llen; i++)
{
tlen <<=8;
- tlen |= *(unsigned char *)ber->ber_ptr;
+ tlen |= *p++;
}
+ ber->ber_ptr = p;
} else {
tlen = *(unsigned char *)ber->ber_ptr++;
}
@@ -645,6 +656,7 @@
to_go = ber->ber_end - ber->ber_rwptr;
assert( to_go > 0 );
+ errno = 0;
res = ber_int_sb_read( sb, ber->ber_rwptr, to_go );
if (res<=0) return LBER_DEFAULT;
ber->ber_rwptr+=res;
--PART.BOUNDARY.1000.17399.mandolin.1053425528.1--