rendered paste body--- start_kdeinit.c (revision 793519)
+++ start_kdeinit.c (working copy)
@@ -94,15 +94,15 @@ int main(int argc, char **argv)
close( pipes[ 0 ] );
/* read original environment passed by start_kdeinit_wrapper */
if( read( 0, header, 7 ) == 7 && strncmp( header, "environ", 7 ) == 0 ) {
- int count;
- if( read( 0, &count, sizeof( int )) == sizeof( int )) {
+ unsigned count;
+ if( read( 0, &count, sizeof( unsigned )) == sizeof( unsigned ) && count < 65535) {
char** env = malloc(( count + 1 ) * sizeof( char* ));
int ok = 1;
for( i = 0;
i < count && ok;
++i ) {
- int len;
- if( read( 0, &len, sizeof( int )) == sizeof( int )) {
+ unsigned len;
+ if( read( 0, &len, sizeof( unsigned )) == sizeof( unsigned ) && len < 4096) {
env[ i ] = malloc( len + 1 );
if( read( 0, env[ i ], len ) == len ) {
env[ i ][ len ] = '\0';
dmueller@oldboy:~/src/kde/3.5/kdelibs/kinit> make