[alsa-devel] [PATCH] pyalsa: fix integer overflow in alsaseq.c
Hello alsa-devel,
I've been using the alsaseq python module and I found a bug. Sometimes the SEQ_* constants have extremely large and incorrect values. For example, 25769803811 instead of 35. The lower 32-bits are always correct.
Obviously, I'm running a 64-bit operating system.
The problem is that the `value` member of the `ConstantObject` structure is an `unsigned int` whereas it should be a `long`. I've attached a patch. It's against the latest released version, 1.0.20.
Regards, Chris Coleman
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
Sorry, here's the patch.
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
2009/8/18 Chris Coleman chris.coleman83@gmail.com:
Hello alsa-devel,
I've been using the alsaseq python module and I found a bug. Sometimes the SEQ_* constants have extremely large and incorrect values. For example, 25769803811 instead of 35. The lower 32-bits are always correct.
Obviously, I'm running a 64-bit operating system.
The problem is that the `value` member of the `ConstantObject` structure is an `unsigned int` whereas it should be a `long`. I've attached a patch. It's against the latest released version, 1.0.20.
Regards, Chris Coleman
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
I just noticed that `PyString_FromFormat` in Python 2.6 doesn't handle `%lx` in format strings, so my patch breaks `repr(Constant)`.
In addition to that, it was not necessary to change the signedness of `value`.
With those two things in mind, the patch perhaps ought to look like this (see attached).
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
2009/8/18 Chris Coleman chris.coleman83@gmail.com:
Sorry, here's the patch.
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
2009/8/18 Chris Coleman chris.coleman83@gmail.com:
Hello alsa-devel,
I've been using the alsaseq python module and I found a bug. Sometimes the SEQ_* constants have extremely large and incorrect values. For example, 25769803811 instead of 35. The lower 32-bits are always correct.
Obviously, I'm running a 64-bit operating system.
The problem is that the `value` member of the `ConstantObject` structure is an `unsigned int` whereas it should be a `long`. I've attached a patch. It's against the latest released version, 1.0.20.
Regards, Chris Coleman
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
At Thu, 20 Aug 2009 20:13:45 +0100, Chris Coleman wrote:
I just noticed that `PyString_FromFormat` in Python 2.6 doesn't handle `%lx` in format strings, so my patch breaks `repr(Constant)`.
In addition to that, it was not necessary to change the signedness of `value`.
With those two things in mind, the patch perhaps ought to look like this (see attached).
Signed-off-by: Chris Coleman <chris.coleman83 at gmail.com>
Thanks, applied now.
Takashi
participants (2)
-
Chris Coleman
-
Takashi Iwai