LDRA Testbed Code Review Report

LDRA Testbed ® Code Review Report

# System : Dovecot-src-lda

Overall Result: FAIL

Report Production | Report Configuration | Analysis phases
--- | --- | ---
C/C++ LDRA Testbed Version: 8.3.0 Config. File: C:\Testbed\CCPP_830_Release\C\sate_creport.dat Produced On: Mon Aug 09 2010 at 18:55:01 Penalty File: C:\Testbed\CCPP_830_Release\c\cpen.dat | Report Level: Summary Report Procedures Reported: Fails Only Programming Standards Model: SATE 2010 L1 Plus Line Numbers refer to: Original Source File Violation Details: Violations Only Reporting Scope: Full analysis scope | Static: Yes Complexity: Yes Static Data Flow: Yes Information Flow: Yes Cross Reference: Yes

#### Contents

Overall Quality Summary

- Totals of Violations for each Standard
- Table of Procedure Results
- Table of Source Files in System
- Table of Global Basic Information

Report on Program Components

- Quality Results Global Program and Selected Procedures

## Overall Quality Summary

#### Totals for Violated Quality Standards

Number of Violations | LDRA Code | (M) Mandatory Standards | CERT Code
--- | --- | --- | ---
1 | 47 S | Array Bound exceeded. | CERT ARR30-C
73 | 77 S | Macro replacement list needs parentheses. | CERT PRE02-C
51 | 78 S | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
1 | 483 S | free parameter is not heap item. | CERT MEM34-C
2 | 577 S | Sizeof argument is a pointer. | CERT EXP01-C
20 | 5 D | Procedure contains UR data flow anomalies. | CERT EXP33-C
91 | 45 D | Pointer not checked for null before use | CERT EXP08-C,EXP34-C
1 | 51 D | Attempt to read from freed memory. | CERT MEM30-C
52 | 69 D | Procedure contains UR data flow anomalies. | CERT EXP33-C
1 | 75 D | Attempt to open file pointer more than once | CERT FIO31-C
6 | 77 D | Local structure returned in function result |

Number of Violations | LDRA Code | (C) Checking (Mandatory) Standards | CERT Code
--- | --- | --- | ---
2 | 76 D | Procedure not called in code analysed |

Number of Violations | LDRA Code | (O) Optional Standards | CERT Code
--- | --- | --- | ---

No Optional Standards Violated

Number of Mandatory Standards checked | 27
Number of Checking Standards checked | 1
Number of Optional Standards checked | 3
Total Standards checked | 31

### OVERALL RESULT: FAIL

Out of 82 program components, 43 (52.44 %) pass ( of which 0 conditionally pass ) and 39 fail ( of which 0 fail only because of insufficient comments )

#### Procedure Results

`Quality Result` |  | `Procedure` |  | `Source File` |  | `Unique Violations` |  | `Failure Density` |
`` |  |  |  |  | `(Viols/R.Line %)` |
FAIL |  | Global Program |
Pass |  | duplicate_cmp |  | duplicate.c |  | 0 |  | 0 |
Pass |  | duplicate_hash |  | duplicate.c |  | 0 |  | 0 |
FAIL |  | duplicate_read_records |  | duplicate.c |  | 3 | - |  | 6 | - |
FAIL |  | duplicate_read |  | duplicate.c |  | 2 | - |  | 4 | - |
FAIL |  | duplicate_file_new |  | duplicate.c |  | 2 | - |  | 14 | - |
Pass |  | duplicate_file_free |  | duplicate.c |  | 0 |  | 0 |
FAIL |  | duplicate_check |  | duplicate.c |  | 3 | - |  | 27 | - |
FAIL |  | duplicate_mark |  | duplicate.c |  | 1 | - |  | 9 | - |
FAIL |  | duplicate_flush |  | duplicate.c |  | 3 | - |  | 7 | - |
FAIL |  | duplicate_init |  | duplicate.c |  | 5 | - |  | 28 | - |
FAIL |  | duplicate_deinit |  | duplicate.c |  | 1 | - |  | 4 | - |
Pass |  | lda_settings_check |  | lda-settings.c |  | 0 |  | 0 |
Pass |  | buffer_get_data |  | buffer.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | buffer_get_used_size |  | buffer.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_create_from_buffer_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
FAIL |  | array_create_i |  | array.h analysed in lmtp-client.c |  | 1 | - |  | 17 | - |
Pass |  | array_free_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_is_created_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_get_pool_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_clear_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_append_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_append_array_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_insert_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_delete_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_get_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_idx_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_get_modifiable_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_append_space_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_copy |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
Pass |  | array_count_i |  | array.h analysed in lmtp-client.c |  | 0 |  | 0 |
FAIL |  | lmtp_client_init |  | lmtp-client.c |  | 2 | - |  | 9 | - |
Pass |  | lmtp_client_close |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_ref |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_unref |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_deinit |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_state_to_string |  | lmtp-client.c |  | 0 |  | 0 |
FAIL |  | lmtp_client_fail |  | lmtp-client.c |  | 1 | - |  | 2 | - |
FAIL |  | lmtp_client_rcpt_next |  | lmtp-client.c |  | 1 | - |  | 7 | - |
Pass |  | lmtp_client_send_data_cmd |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_data_next |  | lmtp-client.c |  | 0 |  | 0 |
FAIL |  | lmtp_client_send_data |  | lmtp-client.c |  | 2 | - |  | 2 | - |
Pass |  | lmtp_client_send_handshake |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_input_get_reply_code |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_input_line |  | lmtp-client.c |  | 0 |  | 0 |
FAIL |  | lmtp_client_input |  | lmtp-client.c |  | 1 | - |  | 14 | - |
Pass |  | lmtp_client_wait_connect |  | lmtp-client.c |  | 0 |  | 0 |
FAIL |  | lmtp_client_output |  | lmtp-client.c |  | 1 | - |  | 3 | - |
Pass |  | lmtp_client_connect |  | lmtp-client.c |  | 0 |  | 0 |

`Quality Result` |  | `Procedure` |  | `Source File` |  | `Unique Violations` |  | `Failure Density` |
`` |  |  |  |  | `(Viols/R.Line %)` |
FAIL |  | lmtp_client_dns_done |  | lmtp-client.c |  | 1 | - |  | 7 | - |
Pass |  | lmtp_client_connect_tcp |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_set_data_header |  | lmtp-client.c |  | 0 |  | 0 |
FAIL |  | lmtp_client_send_rcpts |  | lmtp-client.c |  | 3 | - |  | 19 | - |
FAIL |  | lmtp_client_add_rcpt |  | lmtp-client.c |  | 1 | - |  | 2 | - |
Pass |  | lmtp_client_send |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_send_more |  | lmtp-client.c |  | 0 |  | 0 |
Pass |  | lmtp_client_set data_output_callback |  | lmtp-client.c |  | 0 |  | 0 |
FAIL |  | mail_deliver_get_address |  | mail-deliver.c |  | 2 | - |  | 7 | - |
FAIL |  | mail_deliver_get_log_var_expand_table |  | mail-deliver.c |  | 3 | - |  | 13 | - |
FAIL |  | mail_deliver_log |  | mail-deliver.c |  | 1 | - |  | 17 | - |
Pass |  | mailbox_name_to_mutf7 |  | mail-deliver.c |  | 0 |  | 0 |
FAIL |  | mail_deliver_save_open |  | mail-deliver.c |  | 3 | - |  | 7 | - |
FAIL |  | mail_deliver_save |  | mail-deliver.c |  | 3 | - |  | 13 | - |
Pass |  | mail_deliver_ge _return_address |  | mail-deliver.c |  | 0 |  | 0 |
Pass |  | mail_deliver_ge _new_message_id |  | mail-deliver.c |  | 0 |  | 0 |
FAIL |  | mail_deliver |  | mail-deliver.c |  | 3 | - |  | 9 | - |
FAIL |  | get_var_expand_table |  | mail-send.c |  | 3 | - |  | 25 | - |
FAIL |  | mail_send_rejection |  | mail-send.c |  | 6 | - |  | 10 | - |
FAIL |  | mail_send_forward |  | mail-send.c |  | 5 | - |  | 15 | - |
Pass |  | uni_utf8_char_bytes |  | unichar.h analysed in main.c |  | 0 |  | 0 |
FAIL |  | escape_local_part |  | main.c |  | 2 | - |  | 5 | - |
FAIL |  | address_sanitize |  | main.c |  | 1 | - |  | 8 | - |
FAIL |  | deliver_create_dir |  | main.c |  | 3 | - |  | 13 | - |
FAIL |  | seekable_fd_callback |  | main.c |  | 2 | - |  | 7 | - |
FAIL |  | create_raw_stream |  | main.c |  | 6 | - |  | 13 | - |
FAIL |  | failure_exit_callback |  | main.c |  | 1 | - |  | 5 | - |
Pass |  | print_help |  | main.c |  | 0 |  | 0 |
FAIL |  | main |  | main.c |  | 5 | - |  | 6 | - |
FAIL |  | smtp_client_devnull |  | smtp-client.c |  | 2 | - |  | 21 | - |
FAIL |  | smtp_client_run_sendmail |  | smtp-client.c |  | 1 | - |  | 7 | - |
FAIL |  | smtp_client_open |  | smtp-client.c |  | 5 | - |  | 8 | - |
FAIL |  | smtp_client_close |  | smtp-client.c |  | 2 | - |  | 3 | - |

#### Global Information

#### Source Files in System

Name | Last Modification Date
--- | ---
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lib-lda\smtp-client.c | Fri Mar 26 20:00:04 2010
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lib-lda\mail-send.c | Sun Apr 04 19:00:04 2010
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lib-lda\mail-deliver.c | Fri Jun 25 19:00:04 2010
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lib-lda\lmtp-client.c | Fri Mar 26 07:16:36 2010
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lib-lda\lda-settings.c | Fri Mar 26 07:16:36 2010
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lib-lda\duplicate.c | Fri Mar 26 07:16:36 2010
C:\Code\SAMATE\SATE2010\dovecot-2.0.beta6.20100626\dovecot-2.0.beta6\src\lda\main.c | Fri Apr 23 19:00:04 2010

#### Global Basic Information

Number of procedures: | 81
Number of locally uncalled procedures: | 0
Maximum loop depth: | 2
Total Cyclomatic Complexity: | 302
Number of reformatted executable lines: | 2918
Number of lines of comments: | 5932

## Summary Report on all Program Components which FAIL

Globals / code outside procedures - FAIL

#### Standards Violation Summary - All files

Code | File: Src Line | Violation | Standard
--- | --- | --- | ---
M | compat.h: 214 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 215 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 216 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 217 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 218 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 219 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 220 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 221 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 222 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 223 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 224 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 225 | Macro replacement list needs parentheses. | CERT PRE02-C
M | compat.h: 226 | Macro replacement list needs parentheses. | CERT PRE02-C
M | macros.h: 196 | Macro replacement list needs parentheses. | CERT PRE02-C
M | macros.h: 197 | Macro replacement list needs parentheses. | CERT PRE02-C
M | macros.h: 204 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | macros.h: 204 | Macro replacement list needs parentheses. | CERT PRE02-C
M | macros.h: 205 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | macros.h: 205 | Macro replacement list needs parentheses. | CERT PRE02-C
M | macros.h: 223 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | macros.h: 223 | Macro replacement list needs parentheses. | CERT PRE02-C
M | macros.h: 232 | Macro replacement list needs parentheses. | CERT PRE02-C
M | data-stack.h: 49 | Macro replacement list needs parentheses. | CERT PRE02-C
M | data-stack.h: 51 | Macro replacement list needs parentheses. | CERT PRE02-C
M | data-stack.h: 75 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | data-stack.h: 85 | Macro replacement list needs parentheses. | CERT PRE02-C
M | data-stack.h: 90 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | data-stack.h: 90 | Macro replacement list needs parentheses. | CERT PRE02-C
M | data-stack.h: 97 | Macro replacement list needs parentheses. | CERT PRE02-C
M | mempool.h: 84 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | mempool.h: 87 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | mempool.h: 88 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | mempool.h: 99 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | mempool.h: 99 | Macro replacement list needs parentheses. | CERT PRE02-C
M | mempool.h: 102 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | mempool.h: 102 | Macro replacement list needs parentheses. | CERT PRE02-C
M | imem.h: 8 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | imem.h: 8 | Macro replacement list needs parentheses. | CERT PRE02-C
M | imem.h: 14 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | imem.h: 14 | Macro replacement list needs parentheses. | CERT PRE02-C
M | imem.h: 15 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | imem.h: 15 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array-decl.h: 4 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array-decl.h: 4 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array-decl.h: 7 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array-decl.h: 7 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array-decl.h: 9 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array-decl.h: 9 | Macro replacement list needs parentheses. | CERT PRE02-C
M | ioloop.h: 50 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | ioloop.h: 50 | Macro replacement list needs parentheses. | CERT PRE02-C

Code | File: Src Line | Violation | Standard
--- | --- | --- | ---
M | ioloop.h: 56 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | ioloop.h: 75 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | ioloop.h: 75 | Macro replacement list needs parentheses. | CERT PRE02-C
M | istream.h: 53 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | istream.h: 53 | Macro replacement list needs parentheses. | CERT PRE02-C
M | ostream.h: 61 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | ostream.h: 61 | Macro replacement list needs parentheses. | CERT PRE02-C
M | settings-parser.h: 46 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | settings-parser.h: 46 | Macro replacement list needs parentheses. | CERT PRE02-C
M | settings-parser.h: 50 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | settings-parser.h: 50 | Macro replacement list needs parentheses. | CERT PRE02-C
M | settings-parser.h: 54 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | settings-parser.h: 54 | Macro replacement list needs parentheses. | CERT PRE02-C
M | settings-parser.h: 58 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | settings-parser.h: 58 | Macro replacement list needs parentheses. | CERT PRE02-C
M | settings-parser.h: 62 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | settings-parser.h: 62 | Macro replacement list needs parentheses. | CERT PRE02-C
M | lda-settings.c: 15 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | lda-settings.c: 15 | Macro replacement list needs parentheses. | CERT PRE02-C
M | lda-settings.c: 17 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | lda-settings.c: 17 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 35 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 35 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 37 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 37 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 39 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 39 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 53 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 58 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 58 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 62 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 62 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 90 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 90 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 102 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 102 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 110 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 118 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 126 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 134 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 143 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 143 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 153 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 164 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 164 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 174 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 174 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 183 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 183 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 192 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C

Code | File: Src Line | Violation | Standard
--- | --- | --- | ---
M | array.h: 192 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 201 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 201 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 206 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 206 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 211 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 211 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 216 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 216 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 228 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 232 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 232 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 252 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 257 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 261 | Macro replacement list needs parentheses. | CERT PRE02-C
M | array.h: 266 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 279 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | array.h: 279 | Macro replacement list needs parentheses. | CERT PRE02-C
M | dns-lookup.h: 27 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | dns-lookup.h: 27 | Macro replacement list needs parentheses. | CERT PRE02-C
M | mail-error.h: 19 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | mail-error.h: 19 | Macro replacement list needs parentheses. | CERT PRE02-C
M | mail-storage.h: 414 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | istream-header-filter.h: 33 | Macro parameter not in brackets. | CERT PRE01-C,PRE02-C
M | rfc822-parser.h: 13 | Procedure contains UR data flow anomalies. : rfc822_atext_chars | CERT EXP33-C
| 315 (main.c) |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_read_records (90 to 157 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 141 | Pointer not checked for null before use : d | CERT EXP08-C,EXP34-C
| 140 |  |
M | 141 | Pointer not checked for null before use : new_id | CERT EXP08-C,EXP34-C
| 138 |  |
M | 94 | Procedure contains UR data flow anomalies. : data | CERT EXP33-C
| 100 |  |
M | 96 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 100 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
duplicate.c | 94 | duplicate.c | 100 | data
duplicate.c | 96 | duplicate.c | 100 | size

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_read (159 to 199 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 163 | Procedure contains UR data flow anomalies. : data | CERT EXP33-C
| 178 |  |
M | 164 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 178 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
duplicate.c | 163 | duplicate.c | 178 | data
duplicate.c | 164 | duplicate.c | 178 | size

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_file_new (201 to 219 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 218 | Local structure returned in function result : file |
M | 208 | Pointer not checked for null before use : pool | CERT EXP08-C,EXP34-C
| 206 |  |
M | 209 | Pointer not checked for null before use : file | CERT EXP08-C,EXP34-C
| 208 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_check (233 to 246 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 245 | Pointer not checked for null before use : d.user | CERT EXP08-C,EXP34-C
| 243 |  |
M | 245 | Pointer not checked for null before use : d.id | CERT EXP08-C,EXP34-C
| 241 |  |
M | 236 | Procedure contains UR data flow anomalies. : d.time | CERT EXP33-C
| 245 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
duplicate.c | 236 | duplicate.c | 245 | d.time

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_mark (248 to 269 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 262 | Pointer not checked for null before use : d | CERT EXP08-C,EXP34-C
| 261 |  |
M | 262 | Pointer not checked for null before use : new_id | CERT EXP08-C,EXP34-C
| 259 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_flush (271 to 309 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 287 | Pointer not checked for null before use : output | CERT EXP08-C,EXP34-C
| 286 |  |
M | 278 | Procedure contains UR data flow anomalies. : key | CERT EXP33-C
| 291 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
duplicate.c | 278 | duplicate.c | 291 | key

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_init (311 to 328 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 327 | Local structure returned in function result : ctx |
M | 321 | Pointer not checked for null before use : ctx | CERT EXP08-C,EXP34-C
| 320 |  |
M | 325 | Pointer not checked for null before use : mail_set | CERT EXP08-C,EXP34-C
| 324 |  |
M | 315 | Procedure contains UR data flow anomalies. : home | CERT EXP33-C
| 317 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
duplicate.c | 315 | duplicate.c | 317 | home

[ | Top of Report | | | Procedure Table | | | Contents | ]

duplicate_deinit (330 to 341 duplicate.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 340 | Pointer not checked for null before use : default_pool | CERT EXP08-C,EXP34-C
| 339 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

array_create_i (93 to 101 array.h analysed in lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 100 | Pointer not checked for null before use : buffer | CERT EXP08-C,EXP34-C
| 99 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_init (74 to 97 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 96 | Local structure returned in function result : client |
M | 85 | Pointer not checked for null before use : pool | CERT EXP08-C,EXP34-C
| 84 |  |
M | 86 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 85 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_fail (163 to 189 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 173 | Pointer not checked for null before use : recipients | CERT EXP08-C,EXP34-C
| 171 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_rcpt_next (191 to 207 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 205 | Pointer not checked for null before use : rcpt | CERT EXP08-C,EXP34-C
| 201 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_send_data (248 to 317 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 250 | Procedure contains UR data flow anomalies. : data | CERT EXP33-C
| 259 |  |
M | 252 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 259 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
lmtp-client.c | 250 | lmtp-client.c | 259 | data
lmtp-client.c | 252 | lmtp-client.c | 259 | size

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_input (417 to 439 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 424 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 423 |  |
M | 422 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 423 |  |
M | 438 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 432 |  |
M | 432 | Pointer not checked for null before use : client.rcpt_next_receive_idx | CERT EXP08-C,EXP34-C
| 423 |  |
M | 432 | Pointer not checked for null before use : client.rcpt_next_data_idx | CERT EXP08-C,EXP34-C
| 423 |  |
M | 432 | Pointer not checked for null before use : client.fd | CERT EXP08-C,EXP34-C
| 423 |  |
M | 432 | Pointer not checked for null before use : client.finish_called | CERT EXP08-C,EXP34-C
| 423 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_output (458 to 472 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 469 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 465 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_dns_done (492 to 507 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 503 | Pointer not checked for null before use : client.io | CERT EXP08-C,EXP34-C
| 502 |  |
M | 503 | Pointer not checked for null before use : client.input | CERT EXP08-C,EXP34-C
| 502 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_send_rcpts (546 to 557 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 554 | Pointer not checked for null before use : rcpt | CERT EXP08-C,EXP34-C
| 551 |  |
M | 549 | Procedure contains UR data flow anomalies. : count | CERT EXP33-C
| 552 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
lmtp-client.c | 549 | lmtp-client.c | 552 | count

[ | Top of Report | | | Procedure Table | | | Contents | ]

lmtp_client_add_rcpt (559 to 580 lmtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 566 | Pointer not checked for null before use : rcpt | CERT EXP08-C,EXP34-C
| 565 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_deliver_get_address (19 to 32 mail-deliver.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 22 | Procedure contains UR data flow anomalies. : str | CERT EXP33-C
| 24 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-deliver.c | 22 | mail-deliver.c | 24 | str

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_deliver_get_log_var_expand_table (34 to 66 mail-deliver.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 50 | Pointer not checked for null before use : tab | CERT EXP08-C,EXP34-C
| 49 |  |
M | 52 | Pointer not checked for null before use : tab | CERT EXP08-C,EXP34-C
| 50 |  |
M | 47 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 61 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-deliver.c | 47 | mail-deliver.c | 61 | size

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_deliver_log (68 to 84 mail-deliver.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 80 | Pointer not checked for null before use : str | CERT EXP08-C,EXP34-C
| 77 |  |
M | 79 | Pointer not checked for null before use : str | CERT EXP08-C,EXP34-C
| 77 |  |
M | 81 | Pointer not checked for null before use : msg | CERT EXP08-C,EXP34-C
| 75 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_deliver_save_open (96 to 158 mail-deliver.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 112 | Pointer not checked for null before use : name | CERT EXP08-C,EXP34-C
| 111 |  |
M | 132 | Pointer not checked for null before use : box | CERT EXP08-C,EXP34-C
| 131 |  |
M | 136 | Pointer not checked for null before use : storage | CERT EXP08-C,EXP34-C
| 135 |  |
M | 131 | Pointer not checked for null before use : ns | CERT EXP08-C,EXP34-C
| 122 |  |
M | 103 | Procedure contains UR data flow anomalies. : error | CERT EXP33-C
| 136 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-deliver.c | 103 | mail-deliver.c | 136 | error

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_deliver_save (160 to 242 mail-deliver.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 189 | Pointer not checked for null before use : open_ctx.user | CERT EXP08-C,EXP34-C
| 184 |  |
M | 206 | Pointer not checked for null before use : save_ctx | CERT EXP08-C,EXP34-C
| 205 |  |
M | 226 | Pointer not checked for null before use : t | CERT EXP08-C,EXP34-C
| 225 |  |
M | 236 | Pointer not checked for null before use : storage_r | CERT EXP08-C,EXP34-C
| 196 |  |
M | 205 | Pointer not checked for null before use : t | CERT EXP08-C,EXP34-C
| 201 |  |
M | 206 | Pointer not checked for null before use : kw | CERT EXP08-C,EXP34-C
| 203 |  |
M | 192 | Pointer not checked for null before use : mailbox_name | CERT EXP08-C,EXP34-C
| 188 |  |
M | 219 | Pointer not checked for null before use : mailbox_name | CERT EXP08-C,EXP34-C
| 188 |  |
M | 192 | Pointer not checked for null before use : errstr | CERT EXP08-C,EXP34-C
| 189 |  |
M | 165 | Procedure contains UR data flow anomalies. : box | CERT EXP33-C
| 189 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.ignored_modseq_changes | CERT EXP33-C
| 215 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.ignored_uid_changes | CERT EXP33-C
| 215 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.saved_uids.arr.buffer | CERT EXP33-C
| 215 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.saved_uids.arr.element_size | CERT EXP33-C
| 215 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.saved_uids.v | CERT EXP33-C
| 215 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.saved_uids.v_modifiable | CERT EXP33-C
| 215 |  |
M | 172 | Procedure contains UR data flow anomalies. : changes.uid_validity | CERT EXP33-C
| 215 |  |
M | 170 | Procedure contains UR data flow anomalies. : error | CERT EXP33-C
| 236 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-deliver.c | 165 | mail-deliver.c | 189 | box
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.ignored_modseq_changes
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.ignored_uid_changes
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.saved_uids.arr.buffer
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.saved_uids.arr.element_size
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.saved_uids.v
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.saved_uids.v_modifiable
mail-deliver.c | 172 | mail-deliver.c | 215 | changes.uid_validity
mail-deliver.c | 170 | mail-deliver.c | 236 | error

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_deliver (262 to 294 mail-deliver.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 285 | Pointer not checked for null before use : NULL | CERT EXP08-C,EXP34-C
M | 291 | Pointer not checked for null before use : NULL | CERT EXP08-C,EXP34-C
M | 272 | Pointer not checked for null before use : storage_r | CERT EXP08-C,EXP34-C
| 267 |  |
M | 267 | Procedure contains UR data flow anomalies. : storage_r | CERT EXP33-C

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-deliver.c | 267 | mail-deliver.c | 272 | storage_r

[ | Top of Report | | | Procedure Table | | | Contents | ]

get_var_expand_table (25 to 50 mail-send.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 40 | Pointer not checked for null before use : tab | CERT EXP08-C,EXP34-C
| 39 |  |
M | 42 | Pointer not checked for null before use : tab | CERT EXP08-C,EXP34-C
| 40 |  |
M | 37 | Procedure contains UR data flow anomalies. : subject | CERT EXP33-C
| 44 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-send.c | 37 | mail-send.c | 44 | subject

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_send_rejection (52 to 172 mail-send.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 154 | Sizeof argument is a pointer. | CERT EXP01-C
M | 91 | Pointer not checked for null before use : NULL | CERT EXP08-C,EXP34-C
M | 96 | Pointer not checked for null before use : msgid | CERT EXP08-C,EXP34-C
| 93 |  |
M | 91 | Attempt to open file pointer more than once : f | CERT FIO31-C
M | 104 | Pointer not checked for null before use : boundary | CERT EXP08-C,EXP34-C
| 94 |  |
M | 107 | Pointer not checked for null before use : str | CERT EXP08-C,EXP34-C
| 106 |  |
M | 154 | Pointer not checked for null before use : input | CERT EXP08-C,EXP34-C
| 154 |  |
M | 72 | Pointer not checked for null before use : orig_msgid | CERT EXP08-C,EXP34-C
| 68 |  |
M | 61 | Procedure contains UR data flow anomalies. : data | CERT EXP33-C
| 160 |  |
M | 60 | Procedure contains UR data flow anomalies. : hdr | CERT EXP33-C
| 132 |  |
M | 56 | Procedure contains UR data flow anomalies. : input | CERT EXP33-C
| 145 |  |
M | 62 | Procedure contains UR data flow anomalies. : orig_msgid | CERT EXP33-C
| 67 |  |
M | 68 | Procedure contains UR data flow anomalies. : orig_msgid | CERT EXP33-C
| 62 |  |
M | 64 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 160 |  |
M | 62 | Procedure contains UR data flow anomalies. : value | CERT EXP33-C
| 70 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-send.c | 61 | mail-send.c | 160 | data
mail-send.c | 60 | mail-send.c | 132 | hdr
mail-send.c | 56 | mail-send.c | 145 | input
mail-send.c | 62 | mail-send.c | 67 | orig_msgid
mail-send.c | 68 | mail-send.c | 72 | orig_msgid
mail-send.c | 64 | mail-send.c | 160 | size
mail-send.c | 62 | mail-send.c | 70 | value

[ | Top of Report | | | Procedure Table | | | Contents | ]

mail_send_forward (174 to 210 mail-send.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 197 | Sizeof argument is a pointer. | CERT EXP01-C
M | 197 | Pointer not checked for null before use : input | CERT EXP08-C,EXP34-C
| 197 |  |
M | 191 | Pointer not checked for null before use : return_path | CERT EXP08-C,EXP34-C
| 189 |  |
M | 195 | Pointer not checked for null before use : return_path | CERT EXP08-C,EXP34-C
| 189 |  |
M | 182 | Procedure contains UR data flow anomalies. : data | CERT EXP33-C
| 202 |  |
M | 179 | Procedure contains UR data flow anomalies. : input | CERT EXP33-C
| 186 |  |
M | 184 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 202 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
mail-send.c | 182 | mail-send.c | 202 | data
mail-send.c | 179 | mail-send.c | 186 | input
mail-send.c | 184 | mail-send.c | 202 | size

[ | Top of Report | | | Procedure Table | | | Contents | ]

escape_local_part (48 to 62 main.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 59 | Array Bound exceeded. | CERT ARR30-C
M | 60 | Pointer not checked for null before use : local_part | CERT EXP08-C,EXP34-C
| 60 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

address_sanitize (64 to 86 main.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 71 | Pointer not checked for null before use : pool | CERT EXP08-C,EXP34-C
| 70 |  |
M | 80 | Pointer not checked for null before use : mailbox | CERT EXP08-C,EXP34-C
| 78 |  |
M | 82 | Pointer not checked for null before use : mailbox | CERT EXP08-C,EXP34-C
| 78 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

deliver_create_dir (88 to 111 main.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 99 | Pointer not checked for null before use : ns | CERT EXP08-C,EXP34-C
| 97 |  |
M | 93 | Procedure contains UR data flow anomalies. : gid | CERT EXP33-C
| 99 |  |
M | 92 | Procedure contains UR data flow anomalies. : mode | CERT EXP33-C
| 99 |  |
M | 91 | Procedure contains UR data flow anomalies. : origin | CERT EXP33-C
| 99 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
main.c | 93 | main.c | 99 | gid
main.c | 92 | main.c | 99 | mode
main.c | 91 | main.c | 99 | origin

[ | Top of Report | | | Procedure Table | | | Contents | ]

seekable_fd_callback (113 to 148 main.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 121 | Pointer not checked for null before use : path | CERT EXP08-C,EXP34-C
| 120 |  |
M | 125 | Pointer not checked for null before use : dir | CERT EXP08-C,EXP34-C
| 124 |  |
M | 128 | Pointer not checked for null before use : dir | CERT EXP08-C,EXP34-C
| 127 |  |
C | 113 | Procedure not called in code analysed : seekable_fd_callback |

[ | Top of Report | | | Procedure Table | | | Contents | ]

create_raw_stream (150 to 205 main.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 190 | free parameter is not heap item. | CERT MEM34-C
M | 204 | Local structure returned in function result : input |
M | 164 | Pointer not checked for null before use : input | CERT EXP08-C,EXP34-C
| 163 |  |
M | 194 | Pointer not checked for null before use : input2 | CERT EXP08-C,EXP34-C
| 193 |  |
M | 201 | Pointer not checked for null before use : input_list | CERT EXP08-C,EXP34-C
| 200 |  |
M | 176 | Pointer not checked for null before use : mtime_r | CERT EXP08-C,EXP34-C
| 160 |  |
M | 200 | Pointer not checked for null before use : input2 | CERT EXP08-C,EXP34-C
| 196 |  |
M | 155 | Procedure contains UR data flow anomalies. : data | CERT EXP33-C
| 166 |  |
M | 157 | Procedure contains UR data flow anomalies. : size | CERT EXP33-C
| 166 |  |
M | 158 | Procedure contains UR data flow anomalies. : tz | CERT EXP33-C
| 176 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
main.c | 155 | main.c | 166 | data
main.c | 157 | main.c | 166 | size
main.c | 158 | main.c | 176 | tz

[ | Top of Report | | | Procedure Table | | | Contents | ]

failure_exit_callback (207 to 230 main.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
C | 207 | Procedure not called in code analysed : failure_exit_callback |

[ | Top of Report | | | Procedure Table | | | Contents | ]

main (239 to 495 main.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 392 | Pointer not checked for null before use : sets | CERT EXP08-C,EXP34-C
| 391 |  |
M | 393 | Pointer not checked for null before use : raw_mail_user | CERT EXP08-C,EXP34-C
| 392 |  |
M | 401 | Pointer not checked for null before use : raw_ns | CERT EXP08-C,EXP34-C
| 400 |  |
M | 407 | Pointer not checked for null before use : input | CERT EXP08-C,EXP34-C
| 406 |  |
M | 429 | Pointer not checked for null before use : raw_box | CERT EXP08-C,EXP34-C
| 428 |  |
M | 435 | Pointer not checked for null before use : t | CERT EXP08-C,EXP34-C
| 433 |  |
M | 435 | Pointer not checked for null before use : headers_ctx | CERT EXP08-C,EXP34-C
| 434 |  |
M | 448 | Pointer not checked for null before use : default_pool | CERT EXP08-C,EXP34-C
| 406 |  |
M | 477 | Pointer not checked for null before use : default_pool | CERT EXP08-C,EXP34-C
| 448 |  |
M | 406 | Attempt to read from freed memory. : default_pool | CERT MEM30-C
M | 372 | Pointer not checked for null before use : user | CERT EXP08-C,EXP34-C
| 297 |  |
M | 460 | Pointer not checked for null before use : errstr | CERT EXP08-C,EXP34-C
| 455 |  |
M | 473 | Pointer not checked for null before use : errstr | CERT EXP08-C,EXP34-C
| 455 |  |
M | 265 | Procedure contains UR data flow anomalies. : error | CERT EXP33-C
| 421 |  |
M | 247 | Procedure contains UR data flow anomalies. : errstr | CERT EXP33-C
| 377 |  |
M | 477 | Procedure contains UR data flow anomalies. : ioloop_time | CERT EXP33-C
| 4 (env-util.h) |  |
M | 477 | Procedure contains UR data flow anomalies. : ioloop_timeval.tv_sec | CERT EXP33-C
M | 477 | Procedure contains UR data flow anomalies. : ioloop_timeval.tv_usec | CERT EXP33-C
M | 477 | Procedure contains UR data flow anomalies. : my_pid | CERT EXP33-C
| 6 (lib-signals.h) |  |
M | 295 | Procedure contains UR data flow anomalies. : path | CERT EXP33-C
| 247 |  |
M | 249 | Procedure contains UR data flow anomalies. : service_user | CERT EXP33-C
| 377 |  |
M | 254 | Procedure contains UR data flow anomalies. : storage | CERT EXP33-C
| 448 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
main.c | 265 | main.c | 421 | error
main.c | 247 | main.c | 377 | errstr
[external declaration] |  | main.c | 477 | ioloop_time
[external declaration] |  | main.c | 477 | ioloop_timeval.tv_sec
[external declaration] |  | main.c | 477 | ioloop_timeval.tv_usec
[external declaration] |  | main.c | 477 | my_pid
main.c | 295 | main.c | 405 | path
rfc822-parser.h | 13 | main.c | 315 | rfc822_atext_chars
main.c | 249 | main.c | 377 | service_user
main.c | 254 | main.c | 448 | storage

[ | Top of Report | | | Procedure Table | | | Contents | ]

smtp_client_devnull (19 to 29 smtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 28 | Local structure returned in function result : client |
M | 24 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 23 |  |
M | 23 | Pointer not checked for null before use : default_pool | CERT EXP08-C,EXP34-C
| Ref. Line -1101 (Module 457) |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

smtp_client_run_sendmail (31 to 57 smtp-client.c) - FAIL

#### Standards Violation Summary

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 42 | Pointer not checked for null before use : sendmail_path | CERT EXP08-C,EXP34-C
| 40 |  |
M | 56 | Pointer not checked for null before use : argv | CERT EXP08-C,EXP34-C
| 49 |  |

[ | Top of Report | | | Procedure Table | | | Contents | ]

smtp_client_open (59 to 89 smtp-client.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 88 | Local structure returned in function result : client |
M | 85 | Pointer not checked for null before use : client | CERT EXP08-C,EXP34-C
| 84 |  |
M | 64 | Procedure contains UR data flow anomalies. : fd | CERT EXP33-C
| 67 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
smtp-client.c | 64 | smtp-client.c | 67 | fd

[ | Top of Report | | | Procedure Table | | | Contents | ]

smtp_client_close (91 to 119 smtp-client.c) - FAIL

#### Standards Violation Summary

Code | Violation | Standard
--- | --- | ---
M | Procedure contains UR data flow anomalies. | CERT EXP33-C

Code | Line | Violation | Standard
--- | --- | --- | ---
M | 93 | Procedure contains UR data flow anomalies. : status | CERT EXP33-C
| 98 |  |

#### Possible UR Anomalies

The following variables may be referenced before being given a value

File | Undefine | File | Reference | Variable
--- | --- | --- | --- | ---
smtp-client.c | 93 | smtp-client.c | 98 | status

[ | Top of Report | | | Procedure Table | | | Contents | ]

### End of Code Review Report

###

### Copyright © 2010 Liverpool Data Research Associates