Opened 4 years ago

Last modified 3 years ago

#6152 new defect

Linker warning mktemp is dangerous

Reported by: Andreas Heuermann Owned by: Martin Sjölund
Priority: normal Milestone:
Component: Build Environment Version: v1.17.0-dev
Keywords: linker, mktemp, tmpnam Cc:

Description

When compiling omc we get warnings that some functions like mktemp and tmpnam are dangerous and should be replaced.

/usr/bin/ld: /home/andreas/workspace/OpenModelica/build/lib/x86_64-linux-gnu/omc/libModelicaExternalC.a(ModelicaInternal.o): in function `ModelicaInternal_temporaryFileName':
/home/andreas/workspace/OpenModelica/OMCompiler/3rdParty/ModelicaExternalC/BuildProjects/autotools/../../C-Sources/ModelicaInternal.c:652: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/bin/ld: /home/andreas/workspace/OpenModelica/build/lib/x86_64-linux-gnu/omc/libModelicaMatIO.a(ModelicaMatIO.o): in function `Mat_VarDelete':                          /home/andreas/workspace/OpenModelica/OMCompiler/3rdParty/ModelicaExternalC/BuildProjects/autotools/../../C-Sources/ModelicaMatIO.c:4854: warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'

Annoying but not really a problem (besides security concerns of course).

When compiling Modelica models with OMEdit users will get the same errror message in the "Compilation" tab.

/usr/bin/ld: /home/andreas/workspace/OpenModelica/build/bin/../lib/x86_64-linux-gnu/omc/libModelicaMatIO.a(ModelicaMatIO.o): in function `Mat_VarDelete':
/home/andreas/workspace/OpenModelica/OMCompiler/3rdParty/ModelicaExternalC/BuildProjects/autotools/../../C-Sources/ModelicaMatIO.c:4854: warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'

This will raise questions for a lot of users if they did something wrong when building a model.

Change History (4)

comment:1 by Martin Sjölund, 4 years ago

Take it up at https://github.com/modelica/ModelicaStandardLibrary/issues

That is where the warning originates from

Edit: The best way would be to stop using these functions, but I believe the MSL versions are not secure since they return names instead of opening a file/directory. So MSL would need to be changed in some way...

Last edited 4 years ago by Martin Sjölund (previous) (diff)

comment:2 by Martin Sjölund, 4 years ago

temporaryFileName is not called from and might be possible to remove/obsolete in the next major release of MSL (but I guess it would still remain in the C library for backwards compatibility; maybe it could use mkstemp and return a filename to an existing file instead and hope this is good enough):

ADGenKinetics 1.0.0+r23
ADMSL 1.1.0-alpha-Hamburg
AdvancedNoise 1.0.0
AixLib 0.3.0
AixLib 0.4.0
AixLib 0.9.1
AlgebraTestSuite master
ApproxSpline 1.0.0-master
Arduino 0.1.0
ATplus 2.1.0
BioChem 1.0.2
BondGraph 1.1.0
BondLib 2.3.0
BrineProp 0.5.8
BuildingControlLib 1.0.0
Buildings 4.0.0
Buildings 6.0.0
Buildings 7.0.0
BuildingSystems 2.0.0-beta
BuildSysPro 3.3.0
Chemical 1.1.0
Complex 3.2.3+maint.om
Complex 4.0.0+maint.om
ComplexLib 1.0.0
ConPNlib 1.0.0
DataFiles master
DeployStructLib 1.0.0
Design master
DESLib 1.0.0
DisHeatLib 1.2.0-master
DriveControl 4.0.0-master
ElectricalEnergyStorage 3.2.2-master
ElectroMechanicalDrives 2.4.0
EMOTH 1.4.1-master
ExtendedPetriNets 1.0.0
ExternalLibrary master
ExternalMedia 3.2.1
ExternalMemoryLib master
ExternData 2.5.0
FailureModes 1.2.1
FastBuildings master
FaultTriggering 0.6.6
FCSys 0.2.6
FCSysTest 0.2.6
FeedDriveLibrary 1.0.1
Flight master
FMITest master
FractionalOrder master
FreeFluids 1.1.6-master
FuelCellLib 1.0.0
FuzzyControl 1.0.0
GNU_ScientificLibrary master
HanserModelica 1.1.1
HelmholtzMedia 0.9.8
IBPSA 3.0.0
Icons master
IdealizedContact 0.1.0
IDEAS 2.1.0
IndustrialControlSystems 1.1.0
iPSL 1.1.1
KeyWordIO 0.9.0
LibRAS master
LinearMPC 1.0.0
ManualTracking master
MessagePack 0.1.1-master
Modelica 1.6.0+om
Modelica 2.2.2+maint.om
Modelica 3.2.3+maint.om
Modelica 4.0.0+maint.om
ModelicaAdditions 1.5.0
ModelicaADS 1.0.1
ModelicaByExample 0.6.0
ModelicaCompliance 3.2.0-master
Modelica_DeviceDrivers 1.4.4
Modelica_DeviceDrivers 1.7.0
Modelica_DeviceDrivers 2.0.0
ModelicaDEVS 1.0.0
Modelica_LinearSystems2 2.3.4
Modelica_LinearSystems2 2.4.0
Modelica_Noise 1.0.0-Beta.1
ModelicaReference 3.2.3+maint.om
Modelica_Requirements 0.6.0-master
ModelicaServices 3.2.3+default.modelica.association
ModelicaServices 3.2.3+maint.om
ModelicaServices 4.0.0+maint.om
Modelica_StateGraph2 2.0.1
Modelica_StateGraph2 2.0.2
Modelica_StateGraph2 2.1.0
Modelica_Synchronous 0.92.1
Modelica_Synchronous 0.93.0
ModelicaTest 3.2.3+maint.om
ModelicaTestOverdetermined 3.2.3+maint.om
ModelManagement master
ModPowerSystems master
MultiPhaseMixture 1.0.0
MVEMLib 1.0.1
NcDataReader2 2.5.0
NeuralNetwork 1.0.0
Noise 0.2.0
Nuclear master
ObjectStab 1.1.0-Dev
ObsoleteModelica3 3.2.3+maint.om
ObsoleteModelica4 4.0.0+maint.om
OpenBLDC master
OpenHPL 1.2.0
OpenHydraulics 1.0.1
OpenIPSL 1.5.0
Optimisers 0.1.0-master
PDE master
PhotoVoltaics 1.6.0
PhotoVoltaics_TGM 1.6.0
Physiolibrary 2.3.1
Physiomodel 1.0.0
PJlib master
PJLoeslib master
PlanarMechanics 1.4.1
PNlib 2.2.0
PowerGrids 1.0.1
PowerSystems 1.0.0
PraxisSimulationstechnik master
PropulsionSystem 2020.4.30
PVlib 0.4.0
PVSystems 0.6.2
QCalc 0.3.3
QCalcTests 0.3.3
QSSFluidFlow 1.0.0
RealTimeCoordinationLibrary 1.0.2
RotorAeroLib master
ScalableTestSuite 10.0.0
SDF master
Servomechanisms master
SiemensPower 2.2.0
SMPS master
SolarTherm 0.2.0-master
Soltermica master
Spot 0.706.1
SpotExamples 0.706.1
StreamConnectors master
SystemDynamics 2.1.1-master
ThermalSeparation 0.2.0-master
ThermoCycle 1.0.0
ThermoPower 3.1.0-master
ThermoSysPro 3.2.0
TILMedia 1.5.1-ClaRa
TRANSFORM 1.0.0-beta
UserInteraction master
VehicleInterfaces 1.2.5
VehicleInterfaces 2.0.0
VVDRlib master
WasteWater 2.1.0
WaterHub master
Wavelet master
wbEHPTlib master
wbEHVpkg master
WindPowerPlants 1.2.0
XogenyTest 1.1.0-master

The use of mktemp in ModelicaMatIO could be resolved by using mkstemp instead.

comment:3 by Francesco Casella, 4 years ago

Milestone: 1.17.01.18.0

Retargeted to 1.18.0 because of 1.17.0 timed release.

comment:4 by Francesco Casella, 3 years ago

Milestone: 1.18.0

Ticket retargeted after milestone closed

Note: See TracTickets for help on using tickets.