Commit graph

7067 commits

Author SHA1 Message Date
Erik van der Zalm
9db9842aea Fixed error found by the free coverity tool (https://scan.coverity.com/)
===================================================
Hi,

Please find the latest report on new defect(s) introduced to ErikZalm/Marlin found with Coverity Scan.

Defect(s) Reported-by: Coverity Scan
Showing 15 of 15 defect(s)

** CID 59629:  Unchecked return value  (CHECKED_RETURN)
/Marlin_main.cpp: 2154 in process_commands()()

** CID 59630:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Tone.cpp: 319 in tone(unsigned char, unsigned int, unsigned long)()

** CID 59631:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1187 in process_commands()()

** CID 59632:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1193 in process_commands()()

** CID 59633:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 914 in disable_heater()()

** CID 59634:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 913 in disable_heater()()

** CID 59635:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 626 in analog2temp(int, unsigned char)()

** CID 59636:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 620 in analog2temp(int, unsigned char)()

** CID 59637:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 202 in PID_autotune(float, int, int)()

** CID 59638:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 214 in PID_autotune(float, int, int)()

** CID 59639:  Out-of-bounds write  (OVERRUN)
/Marlin_main.cpp: 2278 in process_commands()()

** CID 59640:  Out-of-bounds read  (OVERRUN)
/Marlin_main.cpp: 1802 in process_commands()()

** CID 59641:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 51 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()

** CID 59642:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 45 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()

** CID 59643:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 32 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()

________________________________________________________________________________________________________
*** CID 59629:  Unchecked return value  (CHECKED_RETURN)
/Marlin_main.cpp: 2154 in process_commands()()
2148                 }
2149               #endif
2150             }
2151           }
2152           break;
2153         case 85: // M85
   CID 59629:  Unchecked return value  (CHECKED_RETURN)
   Calling "code_seen" without checking return value (as is done elsewhere 66 out of 67 times).
2154           code_seen('S');
2155           max_inactive_time = code_value() * 1000;
2156           break;
2157         case 92: // M92
2158           for(int8_t i=0; i < NUM_AXIS; i++)
2159           {

________________________________________________________________________________________________________
*** CID 59630:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino/Tone.cpp: 319 in tone(unsigned char, unsigned int, unsigned long)()
313         else
314         {
315           // two choices for the 16 bit timers: ck/1 or ck/64
316           ocr = F_CPU / frequency / 2 - 1;
317
318           prescalarbits = 0b001;
   CID 59630:  Operands don't affect result  (CONSTANT_EXPRESSION_RESULT)
   "ocr > 65535U" is always false regardless of the values of its operands. This occurs as the logical operand of if.
319           if (ocr > 0xffff)
320           {
321             ocr = F_CPU / frequency / 2 / 64 - 1;
322             prescalarbits = 0b011;
323           }
324

________________________________________________________________________________________________________
*** CID 59631:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1187 in process_commands()()
1181         case 2: // G2  - CW ARC
1182           if(Stopped == false) {
1183             get_arc_coordinates();
1184             prepare_arc_move(true);
1185             return;
1186           }
   CID 59631:  Missing break in switch  (MISSING_BREAK)
   The above case falls through to this one.
1187         case 3: // G3  - CCW ARC
1188           if(Stopped == false) {
1189             get_arc_coordinates();
1190             prepare_arc_move(false);
1191             return;
1192           }

________________________________________________________________________________________________________
*** CID 59632:  Missing break in switch  (MISSING_BREAK)
/Marlin_main.cpp: 1193 in process_commands()()
1187         case 3: // G3  - CCW ARC
1188           if(Stopped == false) {
1189             get_arc_coordinates();
1190             prepare_arc_move(false);
1191             return;
1192           }
   CID 59632:  Missing break in switch  (MISSING_BREAK)
   The above case falls through to this one.
1193         case 4: // G4 dwell
1194           LCD_MESSAGEPGM(MSG_DWELL);
1195           codenum = 0;
1196           if(code_seen('P')) codenum = code_value(); // milliseconds to wait
1197           if(code_seen('S')) codenum = code_value() * 1000; // seconds to wait
1198

________________________________________________________________________________________________________
*** CID 59633:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 914 in disable_heater()()
908          WRITE(HEATER_0_PIN,LOW);
909        #endif
910       #endif
911
912       #if defined(TEMP_1_PIN) && TEMP_1_PIN > -1
913         target_temperature[1]=0;
   CID 59633:  Out-of-bounds write  (OVERRUN)
   Overrunning array "soft_pwm" of 1 bytes at byte offset 1 using index "1".
914         soft_pwm[1]=0;
915         #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
916           WRITE(HEATER_1_PIN,LOW);
917         #endif
918       #endif
919

________________________________________________________________________________________________________
*** CID 59634:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 913 in disable_heater()()
907        #if defined(HEATER_0_PIN) && HEATER_0_PIN > -1
908          WRITE(HEATER_0_PIN,LOW);
909        #endif
910       #endif
911
912       #if defined(TEMP_1_PIN) && TEMP_1_PIN > -1
   CID 59634:  Out-of-bounds write  (OVERRUN)
   Overrunning array "target_temperature" of 1 2-byte elements at element index 1 (byte offset 2) using index "1".
913         target_temperature[1]=0;
914         soft_pwm[1]=0;
915         #if defined(HEATER_1_PIN) && HEATER_1_PIN > -1
916           WRITE(HEATER_1_PIN,LOW);
917         #endif
918       #endif

________________________________________________________________________________________________________
*** CID 59635:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 626 in analog2temp(int, unsigned char)()
620       if(heater_ttbl_map[e] != NULL)
621       {
622         float celsius = 0;
623         uint8_t i;
624         short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
625
   CID 59635:  Out-of-bounds read  (OVERRUN)
   Overrunning array "heater_ttbllen_map" of 1 bytes at byte offset 1 using index "e" (which evaluates to 1).
626         for (i=1; i<heater_ttbllen_map[e]; i++)
627         {
628           if (PGM_RD_W((*tt)[i][0]) > raw)
629           {
630             celsius = PGM_RD_W((*tt)[i-1][1]) +
631               (raw - PGM_RD_W((*tt)[i-1][0])) *

________________________________________________________________________________________________________
*** CID 59636:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 620 in analog2temp(int, unsigned char)()
614         if (e == 0)
615         {
616           return 0.25 * raw;
617         }
618       #endif
619
   CID 59636:  Out-of-bounds read  (OVERRUN)
   Overrunning array "heater_ttbl_map" of 1 2-byte elements at element index 1 (byte offset 2) using index "e" (which evaluates to 1).
620       if(heater_ttbl_map[e] != NULL)
621       {
622         float celsius = 0;
623         uint8_t i;
624         short (*tt)[][2] = (short (*)[][2])(heater_ttbl_map[e]);
625

________________________________________________________________________________________________________
*** CID 59637:  Out-of-bounds write  (OVERRUN)
/temperature.cpp: 202 in PID_autotune(float, int, int)()
196       {
197          soft_pwm_bed = (MAX_BED_POWER)/2;
198          bias = d = (MAX_BED_POWER)/2;
199        }
200        else
201        {
   CID 59637:  Out-of-bounds write  (OVERRUN)
   Overrunning array "soft_pwm" of 1 bytes at byte offset 1 using index "extruder" (which evaluates to 1).
202          soft_pwm[extruder] = (PID_MAX)/2;
203          bias = d = (PID_MAX)/2;
204       }
205
206
207

________________________________________________________________________________________________________
*** CID 59638:  Out-of-bounds read  (OVERRUN)
/temperature.cpp: 214 in PID_autotune(float, int, int)()
208
209      for(;;) {
210
211         if(temp_meas_ready == true) { // temp sample ready
212           updateTemperaturesFromRawValues();
213
   CID 59638:  Out-of-bounds read  (OVERRUN)
   Overrunning array "current_temperature" of 1 4-byte elements at element index 1 (byte offset 4) using index "extruder" (which evaluates to 1).
214           input = (extruder<0)?current_temperature_bed:current_temperature[extruder];
215
216           max=max(max,input);
217           min=min(min,input);
218           if(heating == true && input > temp) {
219             if(millis() - t2 > 5000) {

________________________________________________________________________________________________________
*** CID 59639:  Out-of-bounds write  (OVERRUN)
/Marlin_main.cpp: 2278 in process_commands()()
2272               tmp_extruder = code_value();
2273               if(tmp_extruder >= EXTRUDERS) {
2274                 SERIAL_ECHO_START;
2275                 SERIAL_ECHO(MSG_M200_INVALID_EXTRUDER);
2276               }
2277             }
   CID 59639:  Out-of-bounds write  (OVERRUN)
   Overrunning array "volumetric_multiplier" of 1 4-byte elements at element index 1 (byte offset 4) using index "tmp_extruder" (which evaluates to 1).
2278             volumetric_multiplier[tmp_extruder] = 1 / area;
2279           }
2280           break;
2281         case 201: // M201
2282           for(int8_t i=0; i < NUM_AXIS; i++)
2283           {

________________________________________________________________________________________________________
*** CID 59640:  Out-of-bounds read  (OVERRUN)
/Marlin_main.cpp: 1802 in process_commands()()
1796             int pin_status = code_value();
1797             int pin_number = LED_PIN;
1798             if (code_seen('P') && pin_status >= 0 && pin_status <= 255)
1799               pin_number = code_value();
1800             for(int8_t i = 0; i < (int8_t)sizeof(sensitive_pins); i++)
1801             {
   CID 59640:  Out-of-bounds read  (OVERRUN)
   Overrunning array "sensitive_pins" of 28 2-byte elements at element index 55 (byte offset 110) using index "i" (which evaluates to 55).
1802               if (sensitive_pins[i] == pin_number)
1803               {
1804                 pin_number = -1;
1805                 break;
1806               }
1807             }

________________________________________________________________________________________________________
*** CID 59641:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 51 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
45     }
46
47     LiquidCrystal::LiquidCrystal(uint8_t rs,  uint8_t enable,
48     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
49     {
50       init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);
   CID 59641:  Uninitialized scalar field  (UNINIT_CTOR)
   Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
51     }
52
53     void LiquidCrystal::init(uint8_t fourbitmode, uint8_t rs, uint8_t rw, uint8_t enable,
54     			 uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
55     			 uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
56     {

________________________________________________________________________________________________________
*** CID 59642:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 45 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
39     }
40
41     LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
42     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
43     {
44       init(1, rs, rw, enable, d0, d1, d2, d3, 0, 0, 0, 0);
   CID 59642:  Uninitialized scalar field  (UNINIT_CTOR)
   Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
45     }
46
47     LiquidCrystal::LiquidCrystal(uint8_t rs,  uint8_t enable,
48     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3)
49     {
50       init(1, rs, 255, enable, d0, d1, d2, d3, 0, 0, 0, 0);

________________________________________________________________________________________________________
*** CID 59643:  Uninitialized scalar field  (UNINIT_CTOR)
/Applications/Arduino.app/Contents/Resources/Java/libraries/LiquidCrystal/LiquidCrystal.cpp: 32 in LiquidCrystal::LiquidCrystal(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)()
26
27     LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t rw, uint8_t enable,
28     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
29     			     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
30     {
31       init(0, rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7);
   CID 59643:  Uninitialized scalar field  (UNINIT_CTOR)
   Non-static class member "_initialized" is not initialized in this constructor nor in any functions that it calls.
32     }
33
34     LiquidCrystal::LiquidCrystal(uint8_t rs, uint8_t enable,
35     			     uint8_t d0, uint8_t d1, uint8_t d2, uint8_t d3,
36     			     uint8_t d4, uint8_t d5, uint8_t d6, uint8_t d7)
37     {

________________________________________________________________________________________________________
To view the defects in Coverity Scan visit, http://scan.coverity.com/projects/2224?tab=overview
2014-05-14 21:59:48 +02:00
Neil Darlow
e541323741 Merge https://github.com/ErikZalm/Marlin into Marlin_v1 2014-05-09 15:02:50 +01:00
Alejandro Romero
1c9a70cee9 Support for Gen3 Monolithic electronics
Techzone Monotronics support, ignoring the tip manager and using fan connector as on Sprinter FW
TODO: Add support for tipmanager
2014-05-06 19:24:20 -05:00
daid
2acd3792fc Merge branch 'Marlin_v1' of github.com:ErikZalm/Marlin into Marlin_v1 2014-05-01 12:03:47 +02:00
daid
8b4c4aa5c3 Add feature to check&retry CRC read errors on SD. 2014-05-01 12:03:41 +02:00
nothinman
ce76843dc3 Merge pull request #897 from Makible/5DPrint_D8_Board_Support
5DPrint D8 Controller Board Support
2014-04-28 22:11:28 +01:00
Cameron Lai
ad5c8cbba9 Add safety limit for hot bed power in example configuration 2014-04-25 17:04:24 +08:00
Cameron Lai
6460709d92 Fix bug in PID Autotune report 2014-04-25 16:05:05 +08:00
Cameron Lai
105bebb466 Fix for pin mapping for SDSS pin and Fan pin, so Arduino library can be used 2014-04-25 12:57:47 +08:00
Cameron Lai
97ead2eccb Fix for microstepping pin mapping, not using Teensy pin mapping, but Arduino's default pin mapping so Arduino library can be used 2014-04-25 12:57:11 +08:00
Cameron Lai
d85411f13a Revert "Fix for stepper microstepping"
This reverts commit eea3ba5588.
2014-04-25 12:41:56 +08:00
Cameron Lai
7c7f2d094e Revert "Fix for reading microstepping resolution"
This reverts commit 2715f6ddbf.
2014-04-25 12:41:48 +08:00
Cameron Lai
e2d703377a Enable EEPROM by default for 5DPrint D8 Controller Board in example configuration 2014-04-24 19:15:35 +08:00
Cameron Lai
2715f6ddbf Fix for reading microstepping resolution 2014-04-24 17:48:33 +08:00
Cameron Lai
39e9b133f3 Add example configuration for Makibox printer, which uses the 5DPrint D8 Driver Board 2014-04-24 17:06:07 +08:00
Cameron Lai
da6b536182 Add 5DPrint D8 Driver Board info and temperature table for Makibox hot bed 2014-04-24 16:49:42 +08:00
Cameron Lai
3a8e36f19e Add Digipot config for 5DPrint D8 Driver Board 2014-04-24 12:56:46 +08:00
Cameron Lai
eea3ba5588 Fix for stepper microstepping 2014-04-24 12:56:06 +08:00
Cameron Lai
1cbcbb0971 Add makibox machine information 2014-04-24 12:55:21 +08:00
Cameron Lai
2fa514e88a Add port for 5DPrint D8 Driver board 2014-04-24 12:55:00 +08:00
nothinman
b9126ab497 Merge pull request #894 from MyMakibox/Marlin_v1
Update Marlin_main.cpp
2014-04-23 16:23:56 +01:00
nothinman
a33f099547 Merge pull request #893 from MyMakibox/patch-1
Update Configuration_adv.h
2014-04-23 16:23:40 +01:00
MyMakibox
21ec6b88c3 Update Marlin_main.cpp
Added description of autotemp flags to M109
2014-04-23 17:33:26 +08:00
MyMakibox
e4dc80d3d3 Update Configuration_adv.h
Corrected error in AUTOTEMP instructions
2014-04-23 17:30:07 +08:00
Neil Darlow
6adbdf42e0 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-04-21 15:10:57 +01:00
nothinman
5107018414 Merge pull request #888 from whosawhatsis/quick_home
Speed up QUICK_HOME feedrate for diagonal move
2014-04-20 03:13:36 +01:00
whosawhatsis
27d544ac25 Speed up QUICK_HOME feedrate for diagonal move
Speed up the diagonal move while still keeping each individual axis at
or below its homing feedrate.
2014-04-19 17:29:20 -07:00
nothinman
013793bbe9 Merge pull request #878 from koldoartola/Marlin_v1
Added new language (Basque-Euskera)
2014-04-13 22:37:39 +01:00
nothinman
a23a5395f9 Merge pull request #877 from Nutz95/Marlin_v1
pull Request to Add beta 3950 1% thermistor table into marlin firmware
2014-04-13 22:33:58 +01:00
koldo artola
e5b70237c7 Added new language (Basque-Euskera)
Added:
* new language (Basque-Euskera)
* some minor corrections for Spanish
* added 2 new constants for every language (required for a minor change
I am preparing to ultralcd.cpp)
2014-04-13 22:19:38 +02:00
Nutz95
ed6f4a71c5 fix wrong temptable index 2014-04-13 18:00:55 +02:00
Nutz95
3161740df9 This table is made for thermistor 3950 (can be found on ebay for cheap)
it's caracteristics are :

R25℃ ;100KΩ±1%

B Value(R25/50℃):3990K 1%
Dissipation Factor(mW/℃):1.1~1.6 In still Air
Thermal Time Constant(S):10~17 In Still Air
Operating temperature range:  (-50~+260°C)
Dimension:  1.8mm Dia X4.1mm
Lead Length  :30mm

This table was found on the following blogs:
http://cae2100.wordpress.com/2014/03/08/beta3950-thermistor-table-for-marlin/

and

http://microfabricator.com/articles/view/id/531ad7e59aad9d3131000000/beta-3950-thermistor-table-for-marlin
2014-04-13 17:03:20 +02:00
nothinman
086ff1644f Merge pull request #852 from pixatintes/patch-1
Update language.h
2014-04-13 00:46:17 +01:00
nothinman
3ffc9651b1 Merge pull request #845 from DerSchultze/Sanguinololu-servo
Added servo pin assignments to Sanguinololu
2014-04-13 00:37:28 +01:00
nothinman
357b87b498 Merge pull request #826 from paciotti/patch-1
Configuration_adv.h
2014-04-13 00:22:25 +01:00
neildarlow
95ad6ec9a1 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-04-12 22:20:45 +01:00
nothinman
2fa51f8920 Merge pull request #804 from MissionSt/adjustable-z-probe-offset
Adjustable Z probe offset via custom M-code
2014-04-07 11:42:45 +01:00
Gabe Rosenhouse
27a7cf9fcf use existing strings 2014-04-07 05:01:48 -05:00
Gabe Rosenhouse
d3f305332a Allowable range now includes default value 2014-04-06 19:45:56 -05:00
Gabe Rosenhouse
b0aeac117f Adjustable Z probe offset, via custom M-code 2014-04-06 19:45:56 -05:00
Neil Darlow
73b380d8d2 Merge branch 'Marlin_v1' of https://github.com/ErikZalm/Marlin into Marlin_v1 2014-04-06 19:15:29 +01:00
nothinman
fe4930212c Merge pull request #871 from whosawhatsis/fwretract
Update Readme descriptions for M200, M207 and M208
2014-04-04 20:59:21 +01:00
whosawhatsis
dca9790f42 Update Readme descriptions for M200, M207 and M208 2014-04-04 10:13:44 -07:00
nothinman
c23376f2e7 Merge pull request #837 from whosawhatsis/fwretract
FWRETRACT in mm/s
2014-04-04 11:47:58 +01:00
nothinman
dfb98101e4 Change CONTROLLERFAN_PIN for board 35 to -1, as it would conflict with board's 33 extruder pin, causing burnout (it's the same board, just different number of fans/extruders, therefore should be pin-compatible) 2014-04-03 18:05:48 +01:00
nothinman
f1501317ca Merge pull request #860 from drf5n/therm3950
thermistortables.h: Add comments that table 60 uses beta=3950.
2014-04-02 18:29:57 +01:00
nothinman
9a5d23d96f Merge pull request #866 from sakunamary/Marlin_v1
fix bug for dual extruders not working
2014-04-02 18:27:42 +01:00
nothinman
303ee67896 Merge pull request #864 from whosawhatsis/M200
fix bug in M200 with multiple extruders
2014-04-02 18:26:15 +01:00
Tim
8759508319 fix bug for dual extruders not working
some guy find that marlin not working good for dual extruders delta .
when type T0 or T1 to active extruder and  E0 or E1  move causing XYZ
motion . so i locales the bugs and fix it , I have dry run the fix.
2014-04-01 09:26:19 +08:00
whosawhatsis
a65564eef6 fix bug in M200 with multiple extruders 2014-03-30 11:42:22 -07:00