4949
5050struct kvlist {
5151 struct rtapi_list_head list ;
52- char key [16 ];
52+ char key [16 + 1 ];
5353 int value ;
5454};
5555
@@ -63,7 +63,7 @@ static int *kvlist_lookup(struct rtapi_list_head *head, const char *name) {
6363 if (strncmp (name , ent -> key , sizeof (ent -> key )) == 0 ) return & ent -> value ;
6464 }
6565 struct kvlist * ent = rtapi_kzalloc (sizeof (struct kvlist ), RTAPI_GPF_KERNEL );
66- strncpy (ent -> key , name , sizeof (ent -> key ));
66+ strncpy (ent -> key , name , sizeof (ent -> key )- 1 );
6767 rtapi_list_add (& ent -> list , head );
6868 return & ent -> value ;
6969}
@@ -1054,8 +1054,8 @@ static int hm2_eth_probe(hm2_eth_t *board) {
10541054 lbp16_cmd_addr read_packet ;
10551055
10561056 int ret , send , recv ;
1057- char board_name [16 ] = {0 , };
1058- char llio_name [16 ] = {0 , };
1057+ char board_name [16 ] = {};
1058+ char llio_name [16 ] = {};
10591059
10601060 LBP16_INIT_PACKET4 (read_packet , CMD_READ_BOARD_INFO_ADDR16_INCR (16 /2 ), 0 );
10611061 send = eth_socket_send (board -> sockfd , (void * ) & read_packet , sizeof (read_packet ), 0 );
@@ -1075,8 +1075,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
10751075 board -> llio .split_read = true;
10761076
10771077 if (strncmp (board_name , "7I80DB-16" , 9 ) == 0 ) {
1078- strncpy (llio_name , board_name , 4 );
1079- llio_name [1 ] = tolower (llio_name [1 ]);
1078+ memcpy (llio_name , board_name , 4 );
10801079
10811080 board -> llio .num_ioport_connectors = 4 ;
10821081 board -> llio .pins_per_connector = 17 ;
@@ -1087,8 +1086,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
10871086 board -> llio .fpga_part_number = "XC6SLX16" ;
10881087 board -> llio .num_leds = 4 ;
10891088 } else if (strncmp (board_name , "7I80DB-25" , 9 ) == 0 ) {
1090- strncpy (llio_name , board_name , 4 );
1091- llio_name [1 ] = tolower (llio_name [1 ]);
1089+ memcpy (llio_name , board_name , 4 );
10921090
10931091 board -> llio .num_ioport_connectors = 4 ;
10941092 board -> llio .pins_per_connector = 17 ;
@@ -1099,8 +1097,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
10991097 board -> llio .fpga_part_number = "XC6SLX25" ;
11001098 board -> llio .num_leds = 4 ;
11011099 } else if (strncmp (board_name , "7I80HD-16" , 9 ) == 0 ) {
1102- strncpy (llio_name , board_name , 4 );
1103- llio_name [1 ] = tolower (llio_name [1 ]);
1100+ memcpy (llio_name , board_name , 4 );
11041101
11051102 board -> llio .num_ioport_connectors = 3 ;
11061103 board -> llio .pins_per_connector = 24 ;
@@ -1110,8 +1107,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11101107 board -> llio .fpga_part_number = "XC6SLX16" ;
11111108 board -> llio .num_leds = 4 ;
11121109 } else if (strncmp (board_name , "7I80HD-25" , 9 ) == 0 ) {
1113- strncpy (llio_name , board_name , 4 );
1114- llio_name [1 ] = tolower (llio_name [1 ]);
1110+ memcpy (llio_name , board_name , 4 );
11151111
11161112 board -> llio .num_ioport_connectors = 3 ;
11171113 board -> llio .pins_per_connector = 24 ;
@@ -1121,8 +1117,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11211117 board -> llio .fpga_part_number = "XC6SLX25" ;
11221118 board -> llio .num_leds = 4 ;
11231119 } else if (strncmp (board_name , "7I80HDT" , 7 ) == 0 ) {
1124- strncpy (llio_name , board_name , 4 );
1125- llio_name [1 ] = tolower (llio_name [1 ]);
1120+ memcpy (llio_name , board_name , 4 );
11261121
11271122 board -> llio .num_ioport_connectors = 3 ;
11281123 board -> llio .pins_per_connector = 24 ;
@@ -1132,9 +1127,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11321127 board -> llio .fpga_part_number = "T20F256" ;
11331128 board -> llio .num_leds = 4 ;
11341129 } else if (strncmp (board_name , "7I76E-16" , 8 ) == 0 ) {
1135- strncpy (llio_name , board_name , 5 );
1136- llio_name [1 ] = tolower (llio_name [1 ]);
1137- llio_name [4 ] = tolower (llio_name [4 ]);
1130+ memcpy (llio_name , board_name , 5 );
11381131
11391132 board -> llio .num_ioport_connectors = 3 ;
11401133 board -> llio .pins_per_connector = 17 ;
@@ -1144,9 +1137,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11441137 board -> llio .fpga_part_number = "XC6SLX16" ;
11451138 board -> llio .num_leds = 4 ;
11461139 } else if (strncmp (board_name , "7I76EU" , 8 ) == 0 ) {
1147- strncpy (llio_name , board_name , 5 );
1148- llio_name [1 ] = tolower (llio_name [1 ]);
1149- llio_name [4 ] = tolower (llio_name [4 ]);
1140+ memcpy (llio_name , board_name , 5 );
11501141
11511142 board -> llio .num_ioport_connectors = 3 ;
11521143 board -> llio .pins_per_connector = 17 ;
@@ -1156,8 +1147,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11561147 board -> llio .fpga_part_number = "T20F256" ;
11571148 board -> llio .num_leds = 4 ;
11581149 } else if (strncmp (board_name , "7I92" , 4 ) == 0 ) {
1159- strncpy (llio_name , board_name , 4 );
1160- llio_name [1 ] = tolower (llio_name [1 ]);
1150+ memcpy (llio_name , board_name , 4 );
11611151
11621152 board -> llio .num_ioport_connectors = 2 ;
11631153 board -> llio .pins_per_connector = 17 ;
@@ -1166,8 +1156,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11661156 board -> llio .fpga_part_number = "XC6SLX9" ;
11671157 board -> llio .num_leds = 4 ;
11681158 } else if (strncmp (board_name , "7I92T" , 5 ) == 0 ) {
1169- strncpy (llio_name , board_name , 4 );
1170- llio_name [1 ] = tolower (llio_name [1 ]);
1159+ memcpy (llio_name , board_name , 4 );
11711160
11721161 board -> llio .num_ioport_connectors = 2 ;
11731162 board -> llio .pins_per_connector = 17 ;
@@ -1177,8 +1166,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11771166 board -> llio .num_leds = 4 ;
11781167
11791168 } else if (strncmp (board_name , "7I93" , 4 ) == 0 ) {
1180- strncpy (llio_name , board_name , 4 );
1181- llio_name [1 ] = tolower (llio_name [1 ]);
1169+ memcpy (llio_name , board_name , 4 );
11821170 board -> llio .num_ioport_connectors = 2 ;
11831171 board -> llio .pins_per_connector = 24 ;
11841172 board -> llio .ioport_connector_name [0 ] = "P2" ;
@@ -1187,8 +1175,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
11871175 board -> llio .num_leds = 4 ;
11881176
11891177 } else if (strncmp (board_name , "7I94" , 8 ) == 0 ) {
1190- strncpy (llio_name , board_name , 8 );
1191- llio_name [1 ] = tolower (llio_name [1 ]);
1178+ memcpy (llio_name , board_name , 4 );
11921179 board -> llio .num_ioport_connectors = 2 ;
11931180 board -> llio .pins_per_connector = 21 ;
11941181 board -> llio .io_connector_pin_names = hm2_7i94_pin_names ;
@@ -1208,8 +1195,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
12081195 board -> llio .fpga_part_number = "6slx9tqg144" ;
12091196 board -> llio .num_leds = 4 ;
12101197 } else if (strncmp (board_name , "7I94T" , 8 ) == 0 ) {
1211- strncpy (llio_name , board_name , 4 );
1212- llio_name [1 ] = tolower (llio_name [1 ]);
1198+ memcpy (llio_name , board_name , 4 );
12131199 board -> llio .num_ioport_connectors = 2 ;
12141200 board -> llio .pins_per_connector = 21 ;
12151201 board -> llio .io_connector_pin_names = hm2_7i94_pin_names ;
@@ -1230,8 +1216,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
12301216 board -> llio .num_leds = 4 ;
12311217
12321218 } else if (strncmp (board_name , "7I95" , 8 ) == 0 ) {
1233- strncpy (llio_name , board_name , 4 );
1234- llio_name [1 ] = tolower (llio_name [1 ]);
1219+ memcpy (llio_name , board_name , 4 );
12351220 board -> llio .num_ioport_connectors = 2 ;
12361221 board -> llio .pins_per_connector = 29 ;
12371222 board -> llio .io_connector_pin_names = hm2_7i95_pin_names ;
@@ -1261,8 +1246,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
12611246 board -> llio .num_leds = 4 ;
12621247
12631248 } else if (strncmp (board_name , "7I95T" , 8 ) == 0 ) {
1264- strncpy (llio_name , board_name , 4 );
1265- llio_name [1 ] = tolower (llio_name [1 ]);
1249+ memcpy (llio_name , board_name , 4 );
12661250 board -> llio .num_ioport_connectors = 2 ;
12671251 board -> llio .pins_per_connector = 29 ;
12681252 board -> llio .io_connector_pin_names = hm2_7i95_pin_names ;
@@ -1292,8 +1276,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
12921276 board -> llio .num_leds = 4 ;
12931277
12941278 } else if (strncmp (board_name , "7I96" , 8 ) == 0 ) {
1295- strncpy (llio_name , board_name , 8 );
1296- llio_name [1 ] = tolower (llio_name [1 ]);
1279+ memcpy (llio_name , board_name , 4 );
12971280 board -> llio .num_ioport_connectors = 3 ;
12981281 board -> llio .pins_per_connector = 17 ;
12991282 board -> llio .io_connector_pin_names = hm2_7i96_pin_names ;
@@ -1314,10 +1297,8 @@ static int hm2_eth_probe(hm2_eth_t *board) {
13141297 board -> llio .num_leds = 4 ;
13151298
13161299 } else if (strncmp (board_name , "7I96S" , 8 ) == 0 ) {
1317- strncpy (llio_name , board_name , 8 );
1318- llio_name [1 ] = tolower (llio_name [1 ]);
1319- llio_name [4 ] = tolower (llio_name [4 ]);
1320- board -> llio .num_ioport_connectors = 3 ;
1300+ memcpy (llio_name , board_name , 5 );
1301+ board -> llio .num_ioport_connectors = 3 ;
13211302 board -> llio .pins_per_connector = 17 ;
13221303 board -> llio .io_connector_pin_names = hm2_7i96_pin_names ;
13231304
@@ -1337,8 +1318,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
13371318 board -> llio .num_leds = 4 ;
13381319
13391320 } else if (strncmp (board_name , "7I97" , 8 ) == 0 ) {
1340- strncpy (llio_name , board_name , 8 );
1341- llio_name [1 ] = tolower (llio_name [1 ]);
1321+ memcpy (llio_name , board_name , 4 );
13421322 board -> llio .num_ioport_connectors = 3 ;
13431323 board -> llio .pins_per_connector = 17 ;
13441324 board -> llio .io_connector_pin_names = hm2_7i97_pin_names ;
@@ -1365,8 +1345,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
13651345 board -> llio .num_leds = 4 ;
13661346
13671347 } else if (strncmp (board_name , "7I97T" , 8 ) == 0 ) {
1368- strncpy (llio_name , board_name , 4 );
1369- llio_name [1 ] = tolower (llio_name [1 ]);
1348+ memcpy (llio_name , board_name , 4 );
13701349 board -> llio .num_ioport_connectors = 3 ;
13711350 board -> llio .pins_per_connector = 17 ;
13721351 board -> llio .io_connector_pin_names = hm2_7i97_pin_names ;
@@ -1394,8 +1373,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
13941373
13951374
13961375 } else if (strncmp (board_name , "7I98" , 4 ) == 0 ) {
1397- strncpy (llio_name , board_name , 4 );
1398- llio_name [1 ] = tolower (llio_name [1 ]);
1376+ memcpy (llio_name , board_name , 4 );
13991377 board -> llio .num_ioport_connectors = 3 ;
14001378 board -> llio .pins_per_connector = 17 ;
14011379 board -> llio .ioport_connector_name [0 ] = "P1" ;
@@ -1406,8 +1384,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
14061384
14071385
14081386 } else if (strncmp (board_name , "MC04" , 4 ) == 0 ) {
1409- strncpy (llio_name , board_name , 4 );
1410- llio_name [1 ] = tolower (llio_name [1 ]);
1387+ memcpy (llio_name , board_name , 4 );
14111388 board -> llio .num_ioport_connectors = 2 ;
14121389 board -> llio .pins_per_connector = 30 ;
14131390 board -> llio .ioport_connector_name [0 ] = "P1" ;
@@ -1420,8 +1397,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
14201397
14211398
14221399 } else if (strncmp (board_name , "8CSS" , 4 ) == 0 ) {
1423- strncpy (llio_name , board_name , 4 );
1424- llio_name [1 ] = tolower (llio_name [1 ]);
1400+ memcpy (llio_name , board_name , 4 );
14251401 board -> llio .num_ioport_connectors = 2 ;
14261402 board -> llio .pins_per_connector = 30 ;
14271403 board -> llio .ioport_connector_name [0 ] = "P1" ;
@@ -1434,8 +1410,7 @@ static int hm2_eth_probe(hm2_eth_t *board) {
14341410
14351411 } else {
14361412 LL_PRINT ("Unrecognized ethernet board found: %.16s -- port names will be wrong\n" , board_name );
1437- strncpy (llio_name , board_name , 4 );
1438- llio_name [1 ] = tolower (llio_name [1 ]);
1413+ memcpy (llio_name , board_name , 4 );
14391414
14401415 // this is a layering violation. it would be nice if special values
14411416 // (such as 0 or -1) could be passed here and the layer which can
@@ -1457,6 +1432,11 @@ static int hm2_eth_probe(hm2_eth_t *board) {
14571432 board -> llio .num_leds = 0 ;
14581433 }
14591434
1435+ // Make llio_name lower case
1436+ for (char * cptr = llio_name ; * cptr ; cptr ++ ) {
1437+ * cptr = tolower (* cptr );
1438+ }
1439+
14601440 LL_PRINT ("discovered %.*s\n" , 16 , board_name );
14611441
14621442 rtapi_snprintf (board -> llio .name , sizeof (board -> llio .name ), "hm2_%.*s.%d" , (int )strlen (llio_name ), llio_name , llio_idx (llio_name ));
0 commit comments