diff --git a/oa/magicInit.cpp b/oa/magicInit.cpp index 9563c331..06ab4472 100644 --- a/oa/magicInit.cpp +++ b/oa/magicInit.cpp @@ -123,7 +123,7 @@ TCLFUNC(get_user_unit) { TCL_RTN_ERROR("Usage: %s tech",getArgString(0)); try { - getUserUnit(getArgString(1), uUnit, NULL, techUserUnit); + getUserUnit(getArgString(1), uUnit, sizeof(uUnit), NULL, techUserUnit); Tcl_Obj *strResult = Tcl_NewStringObj(uUnit, strlen(uUnit)); //Tcl_SetResult(REX_interp, uUnit, TCL_STATIC); Tcl_SetObjResult(REX_interp, strResult); diff --git a/oa/magicOA.cpp b/oa/magicOA.cpp index 5b57d6c5..8f897fcc 100644 --- a/oa/magicOA.cpp +++ b/oa/magicOA.cpp @@ -97,7 +97,7 @@ getTechInfo (const char *techName) } int -getUserUnit(const char *techName, char *userUnit, ClientData *cdarg, +getUserUnit(const char *techName, char *userUnit, size_t userUnitSz, ClientData *cdarg, int (*magicFunc)(const char *techName, char *userUnit, ClientData *cdarg), oaCellViewType viewType) { @@ -110,35 +110,35 @@ getUserUnit(const char *techName, char *userUnit, ClientData *cdarg, switch (chipTech->getUserUnits(viewType)) { case oacMicron: //userUnit = "micron"; - strcpy(userUnit, "micron"); + strcpy_s(userUnit, userUnitSz, "micron"); break; case oacMillimeter: //userUnit = "millimeter"; - strcpy(userUnit, "millimeter"); + strcpy_s(userUnit, userUnitSz, "millimeter"); break; case oacCentimeter: //userUnit = "centimeter"; - strcpy(userUnit, "centimeter"); + strcpy_s(userUnit, userUnitSz, "centimeter"); break; case oacMeter: //userUnit = "meter"; - strcpy(userUnit, "meter"); + strcpy_s(userUnit, userUnitSz, "meter"); break; case oacMil: //userUnit = "mil"; - strcpy(userUnit, "mil"); + strcpy_s(userUnit, userUnitSz, "mil"); break; case oacInch: //userUnit = "inch"; - strcpy(userUnit, "inch"); + strcpy_s(userUnit, userUnitSz, "inch"); break; case oacNanometer: //userUnit = "nanometer"; + strcpy_s(userUnit, userUnitSz, "nanometer"); break; - strcpy(userUnit, "nanometer"); default: //userUnit = "none"; - strcpy(userUnit, "none"); + strcpy_s(userUnit, userUnitSz, "none"); } //cout << "getTechUserUnit " << userUnit << endl; if (magicFunc) diff --git a/oa/magicOA.h b/oa/magicOA.h index 61576e6f..0665919f 100644 --- a/oa/magicOA.h +++ b/oa/magicOA.h @@ -6,7 +6,7 @@ // Functions implemented for OA DB access and query int getTechInfo(const char *techName); -int getUserUnit(const char *techName, char *userUnit, ClientData *cdarg, +int getUserUnit(const char *techName, char *userUnit, size_t userUnitSz, ClientData *cdarg, int (*magicFunc) (const char *techName, char *userUnit, ClientData *cdarg) = NULL, oaCellViewType viewType=oacMaskLayout);