Some DVB drivers are incorrectly assuming that the size of
i2c_adapter.name is I2C_NAME_SIZE. Here's a fix.
Also change strncpy to strlcpy, as the former is error-prone
(and was indeed incorrectly used.)
Signed-off-by: Jean Delvare <khali@xxxxxxxxxxxx>
Cc: Uwe Bugla <uwe.bugla@xxxxxx>
Cc: v4l-dvb-maintainer@xxxxxxxxxxx
---
drivers/media/dvb/b2c2/flexcop-i2c.c | 12 ++++++------
drivers/media/dvb/frontends/cx24123.c | 4 ++--
drivers/media/dvb/frontends/s5h1420.c | 3 ++-
3 files changed, 10 insertions(+), 9 deletions(-)
--- linux-2.6.27-rc4.orig/drivers/media/dvb/b2c2/flexcop-i2c.c 2008-07-14 11:15:01.000000000 +0200
+++ linux-2.6.27-rc4/drivers/media/dvb/b2c2/flexcop-i2c.c 2008-08-21 12:16:58.000000000 +0200
@@ -221,12 +221,12 @@ int flexcop_i2c_init(struct flexcop_devi
fc->fc_i2c_adap[1].port = FC_I2C_PORT_EEPROM;
fc->fc_i2c_adap[2].port = FC_I2C_PORT_TUNER;
- strncpy(fc->fc_i2c_adap[0].i2c_adap.name,
- "B2C2 FlexCop I2C to demod", I2C_NAME_SIZE);
- strncpy(fc->fc_i2c_adap[1].i2c_adap.name,
- "B2C2 FlexCop I2C to eeprom", I2C_NAME_SIZE);
- strncpy(fc->fc_i2c_adap[2].i2c_adap.name,
- "B2C2 FlexCop I2C to tuner", I2C_NAME_SIZE);
+ strlcpy(fc->fc_i2c_adap[0].i2c_adap.name, "B2C2 FlexCop I2C to demod",
+ sizeof(fc->fc_i2c_adap[0].i2c_adap.name));
+ strlcpy(fc->fc_i2c_adap[1].i2c_adap.name, "B2C2 FlexCop I2C to eeprom",
+ sizeof(fc->fc_i2c_adap[1].i2c_adap.name));
+ strlcpy(fc->fc_i2c_adap[2].i2c_adap.name, "B2C2 FlexCop I2C to tuner",
+ sizeof(fc->fc_i2c_adap[2].i2c_adap.name));
i2c_set_adapdata(&fc->fc_i2c_adap[0].i2c_adap, &fc->fc_i2c_adap[0]);
i2c_set_adapdata(&fc->fc_i2c_adap[1].i2c_adap, &fc->fc_i2c_adap[1]);
--- linux-2.6.27-rc4.orig/drivers/media/dvb/frontends/cx24123.c 2008-07-14 11:15:01.000000000 +0200
+++ linux-2.6.27-rc4/drivers/media/dvb/frontends/cx24123.c 2008-08-21 12:16:01.000000000 +0200
@@ -1072,8 +1072,8 @@ struct dvb_frontend* cx24123_attach(cons
if (config->dont_use_pll)
cx24123_repeater_mode(state, 1, 0);
- strncpy(state->tuner_i2c_adapter.name,
- "CX24123 tuner I2C bus", I2C_NAME_SIZE);
+ strlcpy(state->tuner_i2c_adapter.name, "CX24123 tuner I2C bus",
+ sizeof(state->tuner_i2c_adapter.name));
state->tuner_i2c_adapter.class = I2C_CLASS_TV_DIGITAL,
state->tuner_i2c_adapter.algo = &cx24123_tuner_i2c_algo;
state->tuner_i2c_adapter.algo_data = NULL;
--- linux-2.6.27-rc4.orig/drivers/media/dvb/frontends/s5h1420.c 2008-07-14 11:15:01.000000000 +0200
+++ linux-2.6.27-rc4/drivers/media/dvb/frontends/s5h1420.c 2008-08-21 12:15:30.000000000 +0200
@@ -915,7 +915,8 @@ struct dvb_frontend *s5h1420_attach(cons
state->frontend.demodulator_priv = state;
/* create tuner i2c adapter */
- strncpy(state->tuner_i2c_adapter.name, "S5H1420-PN1010 tuner I2C bus", I2C_NAME_SIZE);
+ strlcpy(state->tuner_i2c_adapter.name, "S5H1420-PN1010 tuner I2C bus",
+ sizeof(state->tuner_i2c_adapter.name));
state->tuner_i2c_adapter.class = I2C_CLASS_TV_DIGITAL,
state->tuner_i2c_adapter.algo = &s5h1420_tuner_i2c_algo;
state->tuner_i2c_adapter.algo_data = NULL;
--
Jean Delvare
_______________________________________________
v4l-dvb-maintainer mailing list
v4l-dvb-maintainer@xxxxxxxxxxx
http://www.linuxtv.org/cgi-bin/mailman/listinfo/v4l-dvb-maintainer
[Linux Media]
[Older V4L]
[Linux DVB]
[Video Disk Recorder]
[Asterisk]
[Photo]
[DCCP]
[Netdev]
[Xorg]
[Util Linux NG]
[Xfree86]
[Free Photo Albums]
[Fedora Users]
[Fedora Women]
[ALSA Users]
[ALSA Devel]
[SSH]
[Linux USB]
 |
 |
-->