Bug#511250: Here is the fix for this bus

2009-11-30 Thread Marcus Pereira
For a Feedback:  this fix worked for me. There were no crashes since I 
installed the new package.


Marcus

Aníbal Monsalve Salazar escreveu:

On Wed, Sep 02, 2009 at 03:48:46PM +0200, Sandro Serafini wrote:
  

To fix this bug, you have to modify the 05_handle-short-read.dpatch
patch, in this way:

The THREE istance of (row number 58, 94, 133 of the
05_handle-short-read.dpatch file):

+  num_bytes += bytes_read;

Should be modified in:

+  if (bytes_read0) num_bytes += bytes_read;

Because when read returns error, this should not influence the number
of bytes already read.

AND

The THREE istance of (row number 60, 96, 135 of the
05_handle-short-read.dpatch file):

+  while ((bytes_read  0 || errno == EINTR) [...]

Should be modified in:

+  while ((bytes_read  0 || (bytes_read==-1  errno == EINTR)) [...]

Because errno is only valid when read returns -1, errno is not set if
there are no errors from the read; so if read gets interrupted by an
EINTR, then when read reaches end-of-file, read will return 0
with errno still set to EINTR, and the loop become an infinite loop.

Please someone upstream the fix and inform the author of the patch,
thanks!

Sandro



Thank you Sandro for the fix.

Marcus and Artur, could you please test Sandro's fix for this bug?

Cheers!
  


Bug#511250: Here is the fix for this bus

2009-11-19 Thread Aníbal Monsalve Salazar
On Wed, Sep 02, 2009 at 03:48:46PM +0200, Sandro Serafini wrote:
To fix this bug, you have to modify the 05_handle-short-read.dpatch
patch, in this way:

The THREE istance of (row number 58, 94, 133 of the
05_handle-short-read.dpatch file):

+  num_bytes += bytes_read;

Should be modified in:

+  if (bytes_read0) num_bytes += bytes_read;

Because when read returns error, this should not influence the number
of bytes already read.

AND

The THREE istance of (row number 60, 96, 135 of the
05_handle-short-read.dpatch file):

+  while ((bytes_read  0 || errno == EINTR) [...]

Should be modified in:

+  while ((bytes_read  0 || (bytes_read==-1  errno == EINTR)) [...]

Because errno is only valid when read returns -1, errno is not set if
there are no errors from the read; so if read gets interrupted by an
EINTR, then when read reaches end-of-file, read will return 0
with errno still set to EINTR, and the loop become an infinite loop.

Please someone upstream the fix and inform the author of the patch,
thanks!

Sandro

Thank you Sandro for the fix.

Marcus and Artur, could you please test Sandro's fix for this bug?

Cheers!


signature.asc
Description: Digital signature


Bug#511250: Here is the fix for this bus

2009-09-02 Thread Sandro Serafini
To fix this bug, you have to modify the 05_handle-short-read.dpatch
patch, in this way:

The THREE istance of (row number 58, 94, 133 of the
05_handle-short-read.dpatch file):

+  num_bytes += bytes_read;

Should be modified in:

+  if (bytes_read0) num_bytes += bytes_read;

Because when read returns error, this should not influence the number
of bytes already read.

AND

The THREE istance of (row number 60, 96, 135 of the
05_handle-short-read.dpatch file):

+  while ((bytes_read  0 || errno == EINTR) [...]

Should be modified in:

+  while ((bytes_read  0 || (bytes_read==-1  errno == EINTR)) [...]

Because errno is only valid when read returns -1, errno is not set if
there are no errors from the read; so if read gets interrupted by an
EINTR, then when read reaches end-of-file, read will return 0
with errno still set to EINTR, and the loop become an infinite loop.

Please someone upstream the fix and inform the author of the patch,
thanks!

Sandro



-- 
To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org