JavaScript is not currently enabled, but is required for full CodeSonar manual search and browse functionality.
If you are viewing this file in your hub's Web GUI, enable JavaScript in your browser: you will also need it for GUI functionality.
If you opened this file directly from disk, your browser may be directly suppressing JavaScript functionality: certain browsers perform this suppression on local files (but not files delivered by web servers) for security reasons.
| CodeSonar® 9.0p0 Hot Tips | CONFIDENTIAL | CodeSecure Inc |
| GUI Changes | There are a number of new GUI page types; several existing page types have additional functionality. |
|---|---|
| RBAC | CodeSonar now uses a Role Based Access Control (RBAC) scheme to restrict access to information and functionality. |
| Other Security Enhancements | Along with the RBAC scheme, this release includes a number of additional security enhancements. |
| Compiler Models and Front End | There are several changes to compiler model infrastructure, five new compiler models (one of which replaces several previous models), and some changes to the front end. CodeSonar now uses EDG 4.10.1, which provides the ability to parse C++14 and C++/CX. |
| API Changes | There are three new functions in the CodeSonar Plug-in API, and one new function in the General-Purpose API. |
| Extended Cygwin Support | The CodeSonar configuration tool can now be run from Cygwin; satellite hubs can now be started from a Cygwin prompt. |
| FreeBSD 8.4 | Now supported |
| Warning Class Changes | There are several new warning classes, and one renamed warning class. |
| Warning Class Category Mappings |
We now provide broad mappings for CodeSonar warning class
categories, in addition to the close mappings that were
previously provided. The mapping information is available in
tables in the manual and in CSV files.
We have added close and broad mappings from CodeSonar warning classes for several additional coding standards, along with corresponding new configuration presets. |
CodeSonar now uses a Role Based Access Control (RBAC) scheme to restrict access to information and functionality. In brief, this works as follows.
Various aspects of CodeSonar operation have changed due to the introduction of RBAC.
Access to GUI pages and functionality within those pages is no longer governed by "session type", but by RBAC permissions.
There are several changes to the built-in Administrator account.
There are two new built-in hub user accounts.
| Element | Changes |
|---|---|
| Hub User Account |
|
| Analysis |
|
| File |
|
| Launch Daemon |
|
| Project |
|
| Named Chart |
|
| Report Template |
|
| Saved Search |
|
| Warning Processor |
|
| Third-Party Authentication Services |
|
| New Securable Resource Types | Project Tree, Launchd Group. |
| New Concepts for RBAC | Role, Permission, Role-Permission, Securable Resource |
A number of administrative settings have been superseded by RBAC features:
| Deleted Setting | Replacement Functionality |
|---|---|
| Command URLs and SQL Accessible To | Managed by role-permissions. Permission requirements for individual command URLs are described in GUI Reference: Hub Commands; SQL access is controlled by G_SQL_CONSOLE. |
| Who Can Create Accounts | Managed by role-permissions: see Hub User Accounts: Creating Hub User Accounts for details. |
| Allow users to change password by default | Specify a default template user that has G_CHANGE_OWN_PASSWORD permission through one or more of its assigned roles. |
| Allow users to change email by default | Specify a default template user that has G_CHANGE_OWN_EMAIL permission through one or more of its assigned roles. |
| Allow Anonymous Browsing? | Anonymous browsing is available if and only if special user Anonymous has G_SIGN_IN permission through one or more of its assigned roles. When anonymous browsing is enabled, the available information and functionality depend on the role-permissions for the roles assigned to \ Anonymous. |
| Use Visibility Settings to Enforce Access Control? | Access control is managed by role-permissions. |
| Visibility Defaults | There are no longer hub-wide visibility defaults. Visibility defaults are managed on a per-user basis; initial visibility defaults for a new account are copied from those of the template user specified at account creation time. |
Parallel analysis (including distributed analysis) slaves and masters perform mutual authentication when slaves are started automatically. The mutual authentication requirement must be disabled in order to start slaves manually; only do this if you trust all users that could connect to the port on which the analysis master listens.
New codesonar subcommands:
New options to existing codesonar subcommands:
| New Option(s) | Applicable codesonar subcommands (subcommands that don't take any of the new options are not listed) |
|||||||
|---|---|---|---|---|---|---|---|---|
| analyze | build | get | hub-info | hub-start | hub-stop | install-launchd | relocate | |
| [-auth
authtype] [-hubuser username] [-hubpwfile pwfile] [-hubcert certfile] [-hubkey privatekeyfile] |
YES | YES | YES | YES | . | YES | YES | YES |
| [-project [/[ancestors/]]proj-name] | YES | YES | . | . | . | . | . | . |
| [-launchd-group ldgroup] | YES | YES | . | . | . | . | YES | YES |
| [-launchd-key ldkey] | YES | YES | . | . | . | . | YES | YES |
| [protocol://] (with host:port) |
YES | YES | YES | YES | . | YES | YES | YES |
| [-force] | . | . | . | YES | . | . | . | . |
| [-setadminpw] | . | . | . | . | YES | . | . | . |
| [-max-processes proclimit] | . | . | . | . | . | . | YES | . |
The following restrictions apply to the Eclipse plug-in. We expect to eliminate these restrictions in a future release.
There are two new Project Properties settings: Project and Launchd Group.
In addition to the RBAC scheme, this release adds the the following security enhancements.
| HTTPS |
HTTPS is broadly applied across hub communications.
|
|---|---|
| Passwords |
Several changes to handling for hub passwords.
|
| TLS/TLS Certificates |
Applied to a broader set of interactions, and with a higher
degree of security.
|
| Hub directory location | CodeSonar will no longer start a hub whose hub directory is located under the CodeSonar installation directory. |
| OpenSSL upgrade | CodeSonar now uses OpenSSL v1.0.2g. |
| Web GUI protections | Web GUI pages have added protections against cross-site request forgery (CSRF), cross-site scripting (XSS), and clickjacking. |
| Session cookies |
Several adjustments.
|
There are a number of GUI changes in this version of CodeSonar.
| Global Role-Permissions | View and edit the global role-permission assignments for each role on the hub. |
|---|---|
| Launchd Group | Information about a single launchd group, including a table of its child launch daemons and launchd groups. |
| Project Tree | Information about a single project tree, including a table of its child projects and project trees. |
| Resource Role-Permissions | View and edit the role-permission assignments for each role on the hub with respect to a single securable resource. |
| Role Ancestors | View the set of ancestor roles for a role; edit the set of parent roles; edit the role name and description. |
| Role Users | View the set of direct and indirect user assignments for a role; edit direct user assignments; edit the role name and description. |
| Roles | View all roles on the hub; delete roles; add new roles. |
| Security Dashboard | View security suggestions for the hub; link to security functionality. |
| User Certificates | Manage the TLS certificates for a single hub user account. |
| User Roles | View the set of directly and indirectly assigned roles for a user; edit direct assignments. |
| Generate SSL Certificate | This functionality is now provided on the Configure HTTPS page. |
|---|
There are broad changes across all page types to incorporate RBAC and other new functionality.
|
Denotes functionality that is not available to the current user (Anonymous, if no user is signed in). Click to sign in as a user with the appropriate permissions. |
|---|---|
| [May also be black or grey, depending on context.] Denotes a link to a page for viewing or modifying permissions or other security-related settings. |
The following table describes other changes to existing page types.
| Account Editor |
Account Settings tab modified:
|
|---|---|
| Admin
Settings/ User Settings |
The page previously called "User Settings" is now
called "Settings". The Settings and Admin Settings
pages are much more closely related than previously. The only
difference between the two is how they handle functionality
that the user does not have permission to access: the Admin
Settings page disables it while still leaving it visible (using
a 'lock' icon to indicate that it is unavailable),
while the User Settings page does not even show the existence
of such functionality.
Clicking on the Settings link at top left of any GUI page now always navigates to the User Settings page for the currently signed-in user. A link to the Admin Settings page is provided on the Other Links tab of the Settings page. The tabs have been rearranged and renamed. The updated set of tabs is as follows.
|
| Analysis | New link to corresponding Analysis Role-Permissions page. |
| Analysis: Files tab | Additional available table columns. |
| Analysis Cloud |
New functionality:
|
| Analysis Search Results | Additional available table columns. |
| Analysis Slaves | Additional available table columns. |
| Authentication Services | Additional available columns in table of current services; some changes to set of fields in form for adding a new service. |
| Bulk Add Users | Some changes to property selectors. |
| Charting (Chart, Chart Table , Chart Wizard) |
New links to corresponding Saved Chart
Role-Permissions page in File menu and Open Saved Chart
dialog.
Warnings can now be charted by Significance. Charts in the Analysis domain can now be ordered by Hub User. |
| Edit Authentication Service | Some changes to set of fields in form for editing service. |
| File Search Results | Additional available table columns. |
| Home |
New functionality:
|
| Logs | Contents for Parse Details Log, Parse Log / Parse Error Log, and Native Compilation Details Log now depend variously on the settings of new configuration parameters SEND_HOOK_LOG_TO_HUB, SEND_PARSE_LOG_TO_HUB. |
| Manage Warning Processors | Additional available table columns. |
| Management Reports |
Report
Template Editor and Reports
sections on Analysis/Project/Home/Project Tree pages
provide links to link to corresponding Report
Role-Permissions page.
You can now include Project Tree sections in the Report Template Editor: use the report elements menu to insert an Analysis section, then use the section editing dialog to change the Section setting to "Project Tree". |
| Project Search Results |
Changes in table
contents:
|
| Saved Searches | Additional available table columns. |
| Sign In | Sign In tab now provides functionality for signing in with a certificate, if hub configuration permits. |
| Users (previously Manage Users) |
Several changes to contents and functionality.
|
There are several new C/C++ warning classes.
This version of CodeSonar uses CWE version 2.9, published December 7, 2015.
We now provide broad mappings for CodeSonar warning class categories, in addition to the close mappings that were previously provided. The mapping information is available in tables in the manual and in CSV files.
We have added close and broad mappings from CodeSonar warning classes for several additional coding standards, along with corresponding new configuration presets, as shown in the following table.
| Category | Preset |
|---|---|
| CERT-C: SEI CERT C Coding Standard. | certc |
| CERT-CPP: SEI CERT C++ Coding Standard. | certcpp |
| CERT-Java: SEI CERT Oracle Coding Standard for Java. | certjava |
| DISA: Defense Information Systems Agency (DISA) Application Security and Development Security Technical Implementation Guide (STIG). | disa |
| MisraC++2008 MISRA C++:2008 Guidelines for the use of the C++ language in critical systems (June 2008). | misrac++2008, misrac++2008_inc |
There are a number of new compiler-independent parameters, and one new compiler-specific parameter.
| Parameter | Purpose |
|---|---|
| BAD_MACRO_BASE_RANK BAD_MACRO_CATEGORIES BAD_MACRO_CLASS BAD_MACRO_FILENAME BAD_MACRO_INFO BAD_MACRO_LINK BAD_MACRO_NAME BAD_MACRO_SIGNIFICANCE |
These parameters are used together to specify bad macros to check for and warnings to issue when those macros occur. |
| DATA_RACE_MAX_LOCKSETS_PER_MEM_ACCESS | Bounds the number of sets held of locks that are tracked for any given (transitive) memory access. |
| JAVA_PLUGIN_JVM_FLAGS | Specifies additional flags passed to the JVM. |
| LAUNCHD_GROUP | Specifies the parent launchd group for new CodeSonar launch daemons. |
| LAUNCHD_KEY | Specifies extra key data for CodeSonar launch daemons. |
| MANAGED_OBJECTS_PROTECT_PAGES | Specifies whether in-memory pages of managed objects should be protected when not in immediate use. |
| MASTER_USE_TLS | Specifies whether analysis master↔slave sockets should use TLS. |
| NO_IMPLICIT_DEFAULT_FOR_ENUM_SWITCH | States that an implicit default clause should not be generated when a switch statement is being parsed. |
| REMOTE_SLAVES_LAUNCHDS | Specifies the launch daemon or daemons from which analysis slaves may be requested. |
| SEND_HOOK_LOG_TO_HUB | Specifies whether or not native compilation log information will be sent to the hub. |
| SEND_PARSE_LOG_TO_HUB | Specifies whether or not parse details logs will be sent to the hub. |
| TAINT_MAX_ATTEMPTED_SIMILAR_PATHS | Bounds the number of potentially similar taint warnings that CodeSonar will attempt to refine. |
| TAINT_MAX_CHECKED_LOCATIONS_PER_INPUT | For the taint analysis, specifies how many usages of a particular input to a procedure can be checked at call sites. |
| TAINT_MAX_SIMILAR_PATHS | Bounds the number of similar taint warnings that CodeSonar will report. |
| UNFINISHED_CODE_TAGS | Specifies tags that are considered indicators that the code is incomplete. |
| Parameter | Purpose |
|---|---|
| CS_TARG_VTABLE_ENTRY_INT_KIND | Integer kind used for the size of a vtable entry in the IA-64 ABI. |
There are several changes to compiler model infrastructure, three new compiler models (one of which replaces several previous models), and some changes to the front end.
| Model-specific ABI key formats |
ABI keys specified with COMPILER_MODELS, --cs_model_abi_key, --cs_user_abi_key can have
special formats that convey additional, model-specific
semantics. Most existing user-specified ABI keys should be
unaffected; contact CodeSecure support if you are having any
difficulties.
The following models offer model-specific ABI key formats: ch38, cl, dcc, gcc, gpp, shc, shcpp. These special-format keys replace the previous mechanism whereby values such as version numbers could be specified in files with names of the form $CSONAR/csurf/etc/*-compiler-config.txt |
|---|---|
| Implementation |
Compiler models are now all implemented in C++.
The Authoring Compiler Models page contains detailed information for users who wish to create C++ models. If you have previously implemented a custom STk compiler model or made modifications to one of the STk models shipped with CodeSonar and do not want to translate your customizations to C++, you will need to configure CodeSonar to "fall back" to the STk compiler models. Note that if you do this you will not be able to use the compiler models that are new in this release, since they are implemented in C++ only. Contact CodeSecure support if you experience any problems. |
| Borland | The new borland compiler model models the behavior of the Borland C++ compiler for Win32 and the Embarcadero C++ compiler for Win32. |
|---|---|
| CodeVisionAVR |
The new cvavr compiler model models the
behavior of a build carried out with CodeVisionAVR.
The process for constructing a CodeSonar project based on a CodeVisionAVR build differs somewhat to that for other tools. In particular, CodeSonar does not observe the CodeVisionAVR build directly: instead, the cvavr compiler model is applied to the CodeVisionAVR project file. |
| Cosmic | The new cosmic compiler model models the behavior of the Cosmic Software C compilers. |
| MPLAB C18 | The new mcc18 compiler model models the behavior of the MPLAB C18 C compiler. |
| IAR |
There is now only one IAR compiler model: iar. This model covers all compilers covered
by the previous models iccarm,
iccgeneric, icc430, and iccm32. The old model names are
deprecated; COMPILER_MODELS rules that mapped to these
names should be changed to map to iar. For example, rule
COMPILER_MODELS += icc8057.exe -> iccgeneric COMPILER_MODELS += icc8057.exe -> iar |
| EDG version |
CodeSonar now uses EDG 4.10.1, and benefits from:
|
|---|---|
| Normalized C AST changes | Several normalized C AST classes have new attributes. |
| Unormalized C AST changes |
There are new and modified unnormalized C AST classes.
|
| New Front End Options |
(in addition to those provided by the EDG upgrade)
|
| General-Purpose API |
New function:
|
|---|---|
| CodeSonar Plug-In API |
New functions:
|
| 7985 | Show ignored compilations in parse log | fixed |
| 9661 | Update model for armcc to use include directories from environment variables | fixed |
| 13840 | Parse error with use of std::bind | fixed |
| 13852 | CodeSonar crashes when project is in root directory of drive | fixed |
| 13649 | clang and maybe gcc default std to c11 | fixed |
| 14019 | Parse errors from gcc builtins when STL <future> is included. | fixed |
| 14236 | let user specify JVM options for Java plugins | Use new configuration parameter JAVA_PLUGIN_JVM_FLAGS. |
| 14256 | API for getting project name | Use new function cs_project_name(). |
| 14585 | Explore Callers distinguishes results by non-colorblind-safe colors | fixed |
| 14592 | gcc model -lSOMETHING.cpp flag | fixed |
| 14704 14705 14708 |
[EDGcpfe/16468] set(str.find("x"), str.end()) : no instance of constructor matches the argument | fixed |
| 14952 | FP when all switch cases are covered | fixed |
| 14986 | STL: FPs with std::make_pair and std::string | fixed |
| 15289 | Analysis assertion failed: (size_t)CHARACTER_SPAN_END(span) > cursor | fixed |
| 15341 | Hub Exception AttributeError 'NoneType' object has no attribute 'domain' | fixed |
| 15425 | FP: Flipping bits causes Coercion Alters Value or Cast Alters Value warning | fixed |
| 15646 | Disable auto-complete on username/password boxes | fixed |
| 15657 | FP: Mismatched Operand Type with enum | fixed |
| 15667 | Parse C++/CX WinRT code | fixed |
| 15726 | armcc compiler model dropping -D flags | fixed |
| 15739 | Renesas compiler model doesn't handle newlines in include parameters | fixed |
| 15843 | tasking compiler model doesn't process certain flags like -c99 -I -D | fixed |
| 15886 | cprocess crash: can't load vcmeta.dll | fixed |