pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: printing with firefox3?



This patch for CUPS also seems to work.

Would you be interested in taking a look?

Yorick Hardy wrote:
That was my experience too.

I copied the code into a small program and tried it.
No crashes even with the extra & (that doesn't say much though).

The code seems correct if the & is removed.
I am way out of my depth here, could it be stack related?

Maybe I should try malloc/free to see if that makes a difference.

Greg Troxel wrote:
I tried this patch to the cups package (in work/cups-1.3.9/cups), and
got a crash:

--- http.c.~1~  2008-08-01 14:33:16.000000000 -0400
+++ http.c      2009-01-28 09:18:02.000000000 -0500
@@ -1175,7 +1175,7 @@
   for (i = 0; i < sizeof(data); i ++)
     data[i] = rand(); /* Yes, this is a poor source of random data... */
- RAND_seed(&data, sizeof(data));
+  RAND_seed(data, sizeof(data));
 #endif /* HAVE_LIBSSL */
 }

I would be in favor of #if 0 the whole end of the function, at least for
now.

I wonder if the real problem is that the cups http code is assuming that
it can initialize OpenSSL, when probably other things have used it
already.




--
Kind regards,

Yorick Hardy
--- cups/http.c.orig    2008-08-01 20:33:16.000000000 +0200
+++ cups/http.c 2009-01-29 10:22:45.000000000 +0200
@@ -1124,7 +1124,7 @@
   struct timeval       curtime;        /* Current time in microseconds */
 #  endif /* !WIN32 */
   int                  i;              /* Looping var */
-  unsigned char                data[1024];     /* Seed data */
+  unsigned char                *data;          /* Seed data */
 #endif /* HAVE_LIBSSL */
 
 #ifdef WIN32
@@ -1172,10 +1172,17 @@
   srand(curtime.tv_sec + curtime.tv_usec);
 #endif /* WIN32 */
 
-  for (i = 0; i < sizeof(data); i ++)
-    data[i] = rand(); /* Yes, this is a poor source of random data... */
+  data = (unsigned char*) malloc(1024 * sizeof(unsigned char));
 
-  RAND_seed(&data, sizeof(data));
+  if (data != NULL)
+  {
+    for (i = 0; i < 1024; i ++)
+      data[i] = rand(); /* Yes, this is a poor source of random data... */
+
+    RAND_seed(data, sizeof(data));
+
+    free(data);
+  }
 #endif /* HAVE_LIBSSL */
 }
 


Home | Main Index | Thread Index | Old Index