Revision: 54439
http://brlcad.svn.sourceforge.net/brlcad/?rev=54439&view=rev
Author: brlcad
Date: 2013-02-20 05:15:28 +0000 (Wed, 20 Feb 2013)
Log Message:
-----------
gcc 4.7.2 rightly detected the possibility of a negative array index path if
endpos ends up still at zero when we begin processing. looks like that could
happen if we find a slash, but fail to tokenize on it for whatever reason.
adding a sanity check does the trick.
Modified Paths:
--------------
brlcad/trunk/src/libged/copyeval.c
Modified: brlcad/trunk/src/libged/copyeval.c
===================================================================
--- brlcad/trunk/src/libged/copyeval.c 2013-02-20 05:07:30 UTC (rev 54438)
+++ brlcad/trunk/src/libged/copyeval.c 2013-02-20 05:15:28 UTC (rev 54439)
@@ -36,15 +36,16 @@
int
ged_copyeval(struct ged *gedp, int argc, const char *argv[])
{
+ static const char *usage = "path_to_old_prim new_prim";
+ struct _ged_trace_data gtd;
struct directory *dp;
+ struct rt_db_internal *ip;
struct rt_db_internal internal, new_int;
- struct rt_db_internal *ip;
+
+ char *tok;
+ int endpos = 0;
+ int i;
mat_t start_mat;
- int i;
- int endpos;
- char *tok;
- struct _ged_trace_data gtd;
- static const char *usage = "path_to_old_prim new_prim";
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
GED_CHECK_READ_ONLY(gedp, GED_ERROR);
@@ -76,8 +77,6 @@
/* build directory pointer array for desired path */
if (strchr(argv[1], '/')) {
- endpos = 0;
-
tok = strtok((char *)argv[1], "/");
while (tok) {
GED_DB_LOOKUP(gedp, gtd.gtd_obj[endpos], tok, LOOKUP_NOISY,
GED_ERROR & GED_QUIET);
@@ -85,11 +84,15 @@
tok = strtok((char *)NULL, "/");
}
} else {
- endpos = 0;
GED_DB_LOOKUP(gedp, gtd.gtd_obj[endpos], argv[1], LOOKUP_NOISY,
GED_ERROR & GED_QUIET);
endpos++;
}
+ if (endpos < 1) {
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+ return GED_ERROR;
+ }
+
gtd.gtd_objpos = endpos - 1;
GED_DB_GET_INTERNAL(gedp, &internal, gtd.gtd_obj[endpos - 1],
bn_mat_identity, &rt_uniresource, GED_ERROR);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_feb
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits