Switching back to strlcpy/memset to avoid padding problems diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.0-test2/sound/oss/maestro.c linux-2.6.0-test2-ac1/sound/oss/maestro.c --- linux-2.6.0-test2/sound/oss/maestro.c 2003-07-14 14:11:57.000000000 +0100 +++ linux-2.6.0-test2-ac1/sound/oss/maestro.c 2003-07-23 16:32:08.000000000 +0100 @@ -2030,8 +2030,9 @@ VALIDATE_CARD(card); if (cmd == SOUND_MIXER_INFO) { mixer_info info; - strncpy(info.id, card_names[card->card_type], sizeof(info.id)); - strncpy(info.name, card_names[card->card_type], sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, card_names[card->card_type], sizeof(info.id)); + strlcpy(info.name, card_names[card->card_type], sizeof(info.name)); info.modify_counter = card->mix.modcnt; if (copy_to_user((void *)arg, &info, sizeof(info))) return -EFAULT; @@ -2039,8 +2040,9 @@ } if (cmd == SOUND_OLD_MIXER_INFO) { _old_mixer_info info; - strncpy(info.id, card_names[card->card_type], sizeof(info.id)); - strncpy(info.name, card_names[card->card_type], sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, card_names[card->card_type], sizeof(info.id)); + strlcpy(info.name, card_names[card->card_type], sizeof(info.name)); if (copy_to_user((void *)arg, &info, sizeof(info))) return -EFAULT; return 0; diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.0-test2/sound/oss/msnd_pinnacle.c linux-2.6.0-test2-ac1/sound/oss/msnd_pinnacle.c --- linux-2.6.0-test2/sound/oss/msnd_pinnacle.c 2003-07-14 14:11:57.000000000 +0100 +++ linux-2.6.0-test2-ac1/sound/oss/msnd_pinnacle.c 2003-07-23 16:32:08.000000000 +0100 @@ -555,8 +555,9 @@ } #define set_mixer_info() \ - strncpy(info.id, "MSNDMIXER", sizeof(info.id)); \ - strncpy(info.name, "MultiSound Mixer", sizeof(info.name)); + memset(&info, 0, sizeof(info)); \ + strlcpy(info.id, "MSNDMIXER", sizeof(info.id)); \ + strlcpy(info.name, "MultiSound Mixer", sizeof(info.name)); static int mixer_ioctl(unsigned int cmd, unsigned long arg) { diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.0-test2/sound/oss/sonicvibes.c linux-2.6.0-test2-ac1/sound/oss/sonicvibes.c --- linux-2.6.0-test2/sound/oss/sonicvibes.c 2003-07-14 14:11:57.000000000 +0100 +++ linux-2.6.0-test2-ac1/sound/oss/sonicvibes.c 2003-07-23 16:32:08.000000000 +0100 @@ -1046,8 +1046,9 @@ VALIDATE_STATE(s); if (cmd == SOUND_MIXER_INFO) { mixer_info info; - strncpy(info.id, "SonicVibes", sizeof(info.id)); - strncpy(info.name, "S3 SonicVibes", sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, "SonicVibes", sizeof(info.id)); + strlcpy(info.name, "S3 SonicVibes", sizeof(info.name)); info.modify_counter = s->mix.modcnt; if (copy_to_user((void *)arg, &info, sizeof(info))) return -EFAULT; @@ -1055,8 +1056,9 @@ } if (cmd == SOUND_OLD_MIXER_INFO) { _old_mixer_info info; - strncpy(info.id, "SonicVibes", sizeof(info.id)); - strncpy(info.name, "S3 SonicVibes", sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, "SonicVibes", sizeof(info.id)); + strlcpy(info.name, "S3 SonicVibes", sizeof(info.name)); if (copy_to_user((void *)arg, &info, sizeof(info))) return -EFAULT; return 0; diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.0-test2/sound/oss/soundcard.c linux-2.6.0-test2-ac1/sound/oss/soundcard.c --- linux-2.6.0-test2/sound/oss/soundcard.c 2003-07-14 14:11:57.000000000 +0100 +++ linux-2.6.0-test2-ac1/sound/oss/soundcard.c 2003-07-23 16:32:08.000000000 +0100 @@ -288,9 +288,9 @@ static int get_mixer_info(int dev, caddr_t arg) { mixer_info info; - - strncpy(info.id, mixer_devs[dev]->id, sizeof(info.id)); - strncpy(info.name, mixer_devs[dev]->name, sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, mixer_devs[dev]->id, sizeof(info.id)); + strlcpy(info.name, mixer_devs[dev]->name, sizeof(info.name)); info.modify_counter = mixer_devs[dev]->modify_counter; if (__copy_to_user(arg, &info, sizeof(info))) return -EFAULT; @@ -300,9 +300,9 @@ static int get_old_mixer_info(int dev, caddr_t arg) { _old_mixer_info info; - - strncpy(info.id, mixer_devs[dev]->id, sizeof(info.id)); - strncpy(info.name, mixer_devs[dev]->name, sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, mixer_devs[dev]->id, sizeof(info.id)); + strlcpy(info.name, mixer_devs[dev]->name, sizeof(info.name)); if (copy_to_user(arg, &info, sizeof(info))) return -EFAULT; return 0; diff -u --new-file --recursive --exclude-from /usr/src/exclude linux-2.6.0-test2/sound/oss/swarm_cs4297a.c linux-2.6.0-test2-ac1/sound/oss/swarm_cs4297a.c --- linux-2.6.0-test2/sound/oss/swarm_cs4297a.c 2003-07-14 14:11:57.000000000 +0100 +++ linux-2.6.0-test2-ac1/sound/oss/swarm_cs4297a.c 2003-07-23 16:32:08.000000000 +0100 @@ -90,7 +90,6 @@ #include <asm/sibyte/64bit.h> struct cs4297a_state; -EXPORT_NO_SYMBOLS; static void stop_dac(struct cs4297a_state *s); static void stop_adc(struct cs4297a_state *s); @@ -1238,8 +1237,9 @@ } if (cmd == SOUND_MIXER_INFO) { mixer_info info; - strncpy(info.id, "CS4297a", sizeof(info.id)); - strncpy(info.name, "Crystal CS4297a", sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, "CS4297a", sizeof(info.id)); + strlcpy(info.name, "Crystal CS4297a", sizeof(info.name)); info.modify_counter = s->mix.modcnt; if (copy_to_user((void *) arg, &info, sizeof(info))) return -EFAULT; @@ -1247,8 +1247,9 @@ } if (cmd == SOUND_OLD_MIXER_INFO) { _old_mixer_info info; - strncpy(info.id, "CS4297a", sizeof(info.id)); - strncpy(info.name, "Crystal CS4297a", sizeof(info.name)); + memset(&info, 0, sizeof(info)); + strlcpy(info.id, "CS4297a", sizeof(info.id)); + strlcpy(info.name, "Crystal CS4297a", sizeof(info.name)); if (copy_to_user((void *) arg, &info, sizeof(info))) return -EFAULT; return 0;