Skip to content

Commit 340e345

Browse files
authored
Merge pull request #3893 from BsAtHome/fix_strncpy-and-index-check
Fix strncpy truncation warning and cppcheck index-before-check error
2 parents fd3497d + 111379d commit 340e345

File tree

2 files changed

+16
-23
lines changed

2 files changed

+16
-23
lines changed

src/emc/usr_intf/emcsh.cc

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -994,9 +994,8 @@ static int emc_tool_offset(ClientData /*clientdata*/,
994994
Tcl_Interp * interp, int objc,
995995
Tcl_Obj * CONST objv[])
996996
{
997-
char string[1];
998997
Tcl_Obj *tlobj;
999-
string[0] = 'Z'; //default if not specified
998+
char ch = 'Z'; //default if not specified
1000999

10011000
CHECKEMC
10021001
if (objc > 2) {
@@ -1009,10 +1008,10 @@ static int emc_tool_offset(ClientData /*clientdata*/,
10091008
}
10101009

10111010
if (objc != 1) {
1012-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
1011+
ch = Tcl_GetStringFromObj(objv[1], 0)[0];
10131012
}
10141013

1015-
switch (string[0]) {
1014+
switch (ch) {
10161015
case 'x': case 'X':
10171016
tlobj = Tcl_NewDoubleObj(convertLinearUnits(
10181017
emcStatus->task.toolOffset.tran.x));
@@ -1115,7 +1114,6 @@ static int emc_abs_cmd_pos(ClientData /*clientdata*/,
11151114
Tcl_Interp * interp, int objc,
11161115
Tcl_Obj * CONST objv[])
11171116
{
1118-
char string[1];
11191117
Tcl_Obj *posobj;
11201118

11211119
CHECKEMC
@@ -1128,9 +1126,9 @@ static int emc_abs_cmd_pos(ClientData /*clientdata*/,
11281126
updateStatus();
11291127
}
11301128

1131-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
1129+
char ch = Tcl_GetStringFromObj(objv[1], 0)[0];
11321130

1133-
switch (string[0]) {
1131+
switch (ch) {
11341132
case 'x': case 'X':
11351133
posobj = Tcl_NewDoubleObj(convertLinearUnits(
11361134
emcStatus->motion.traj.position.tran.x));
@@ -1180,7 +1178,6 @@ static int emc_abs_act_pos(ClientData /*clientdata*/,
11801178
Tcl_Interp * interp, int objc,
11811179
Tcl_Obj * CONST objv[])
11821180
{
1183-
char string[1];
11841181
Tcl_Obj *posobj;
11851182

11861183
CHECKEMC
@@ -1193,9 +1190,9 @@ static int emc_abs_act_pos(ClientData /*clientdata*/,
11931190
updateStatus();
11941191
}
11951192

1196-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
1193+
char ch = Tcl_GetStringFromObj(objv[1], 0)[0];
11971194

1198-
switch (string[0]) {
1195+
switch (ch) {
11991196
case 'x': case 'X':
12001197
posobj = Tcl_NewDoubleObj(convertLinearUnits(
12011198
emcStatus->motion.traj.actualPosition.tran.x));
@@ -1245,7 +1242,6 @@ static int emc_rel_cmd_pos(ClientData /*clientdata*/,
12451242
Tcl_Interp * interp, int objc,
12461243
Tcl_Obj * CONST objv[])
12471244
{
1248-
char string[1];
12491245
Tcl_Obj *posobj;
12501246

12511247
CHECKEMC
@@ -1258,10 +1254,10 @@ static int emc_rel_cmd_pos(ClientData /*clientdata*/,
12581254
updateStatus();
12591255
}
12601256

1261-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
1257+
char ch = Tcl_GetStringFromObj(objv[1], 0)[0];
12621258

12631259
double d = 0.0;
1264-
switch (string[0]) {
1260+
switch (ch) {
12651261
case 'x': case 'X':
12661262
d = convertLinearUnits(emcStatus->motion.traj.position.tran.x -
12671263
emcStatus->task.g5x_offset.tran.x -
@@ -1329,7 +1325,6 @@ static int emc_rel_act_pos(ClientData /*clientdata*/,
13291325
Tcl_Interp * interp, int objc,
13301326
Tcl_Obj * CONST objv[])
13311327
{
1332-
char string[1];
13331328
Tcl_Obj *posobj;
13341329

13351330
CHECKEMC
@@ -1342,10 +1337,10 @@ static int emc_rel_act_pos(ClientData /*clientdata*/,
13421337
updateStatus();
13431338
}
13441339

1345-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
1340+
char ch = Tcl_GetStringFromObj(objv[1], 0)[0];
13461341

13471342
double d = 0.0;
1348-
switch (string[0]) {
1343+
switch (ch) {
13491344
case 'x': case 'X':
13501345
d = convertLinearUnits(emcStatus->motion.traj.actualPosition.tran.x -
13511346
emcStatus->task.g5x_offset.tran.x -
@@ -1442,7 +1437,6 @@ static int emc_pos_offset(ClientData /*clientdata*/,
14421437
Tcl_Interp * interp, int objc,
14431438
Tcl_Obj * CONST objv[])
14441439
{
1445-
char string[1];
14461440
Tcl_Obj *posobj;
14471441

14481442
CHECKEMC
@@ -1455,9 +1449,9 @@ static int emc_pos_offset(ClientData /*clientdata*/,
14551449
updateStatus();
14561450
}
14571451

1458-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
1452+
char ch = Tcl_GetStringFromObj(objv[1], 0)[0];
14591453

1460-
switch (string[0]) {
1454+
switch (ch) {
14611455
case 'x': case 'X':
14621456
posobj = Tcl_NewDoubleObj(convertLinearUnits(emcStatus->task.g5x_offset.tran.x
14631457
+emcStatus->task.g92_offset.tran.x));
@@ -3116,7 +3110,6 @@ static int emc_probed_pos(ClientData /*clientdata*/,
31163110
Tcl_Interp * interp, int objc,
31173111
Tcl_Obj * CONST objv[])
31183112
{
3119-
char string[1];
31203113
Tcl_Obj *posobj;
31213114

31223115
CHECKEMC
@@ -3129,9 +3122,9 @@ static int emc_probed_pos(ClientData /*clientdata*/,
31293122
updateStatus();
31303123
}
31313124

3132-
strncpy(string, Tcl_GetStringFromObj(objv[1], 0),1);
3125+
char ch = Tcl_GetStringFromObj(objv[1], 0)[0];
31333126

3134-
switch (string[0]) {
3127+
switch (ch) {
31353128
case 'x': case 'X':
31363129
posobj = Tcl_NewDoubleObj(convertLinearUnits(
31373130
emcStatus->motion.traj.probedPosition.tran.x));

src/libnml/rcs/rcs_print.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ int separate_words(char **_dest, int _max, char *_src)
271271
rtapi_strxcpy(word_buffer, _src);
272272
char* saveptr;
273273
_dest[0] = strtok_r(word_buffer, " \n\r\t", &saveptr);
274-
for (i = 0; NULL != _dest[i] && i < _max - 1; i++) {
274+
for (i = 0; i < _max - 1 && NULL != _dest[i]; i++) {
275275
_dest[i + 1] = strtok_r(NULL, " \n\r\t", &saveptr);
276276
}
277277
if (_dest[_max - 1] == NULL && i == _max - 1) {

0 commit comments

Comments
 (0)