Using Application Data Integrity (ADI)
The SPARC M7, SPARC M8, SPARC S7, SPARC T7, and SPARC T8 servers support
                  the Application Data Integrity (ADI) feature. The adiheap and
adistack security extensions enable ADI usage on these
                  platforms by the malloc()
 family of functions in the
libumem and libc libraries. You can
                  also use the libadimalloc library on platforms that support
                  ADI.
               
ADI detects memory corruptions in optimized production code by adding version
                  numbers to the application's memory pointers and the memory they point to. The
                  hardware does this by allowing software to mark software buffers with special
                  versions. On execution the processor compares the version encoded in the pointer
                  used by a load or store instruction with the version assigned to the target
                  location and generates an exception if there is a mismatch. The ADI feature can be
                  used by the Database, by user applications that manage memory, and by the OS. For
		  more information about developing applications that use ADI, see the 
                     adi(2) and 
                     adi(3C) man pages.
               
High-level interfaces that support ADI include the following:
- 
                        
                     adiheapsecurity extension
- 
                     
                     Protects against process heap corruption by enabling ADI usage by the mallocfamily of functions inlibumemandlibc. For more information, see Preventing Process Heap Corruption Using adiheap in Securing Systems and Attached Devices in Oracle Solaris 11.4.
- 
                        
                     adistacksecurity extension
- 
                     
                     Protects against stack buffer overflow. For more information, see ADI-Based Stack Protection Using adistack in Securing Systems and Attached Devices in Oracle Solaris 11.4. 
- 
                        
                     kadisecurity extension
- 
                     
                     Uses ADI to assist in debugging kernel ADI errors. For more information, see Using KADI in Writing Device Drivers in Oracle Solaris 11.4. 
- 
                        
                     libclibrary
- 
                     
                     After the adiheapsecurity extension is enabled, themallocfamily of functions is ADI-aware. For more information, see thelibc(3LIB) man page.
- 
                        
                     libumemlibrary
- 
                     
                     After the adiheapsecurity extension is enabled, themallocfamily of functions is ADI-aware. For more information, see thelibumem(3LIB) man page.
- 
                        
                     libadimalloclibrary
- 
                     
                     Contains ADI-aware memory allocation functions. For more information, see the libadimalloc(3LIB) man page.
For additional information and examples. refer to:
Low-level interfaces that support ADI include the following:
- 
                        
                     copyin()
- 
                     
                     Returns an error value when there is a version mismatch. For more information, see the copyin(9F) man page.
- 
                        
                     copyout()
- 
                     
                     Returns an error value when there is a version mismatch. For more information, see the copyout(9F) man page.
- 
                        
                     ddi_copyin()
- 
                     
                     Returns an error value when there is a version mismatch. For more information, see the ddi_copyin(9F) man page.
- 
                        
                     ddi_copyout()
- 
                     
                     Returns an error value when there is a version mismatch. For more information, see the ddi_copyout(9F) man page.
- 
                        
                     getmsg()
- 
                     
                     Returns an error value if a version mismatch is detected while the system is writing data to the buffer. For more information, see the getmsg(2) man page.
- 
                        
                     memcntl()
- 
                     
                     Allows ADI to be enabled or disabled for specified memory pages. For more information, see the memcntl(2) man page.
- 
                        
                     meminfo()
- 
                     
                     Provides the status of ADI for a specified virtual address. For more information, see the meminfo(2) man page.
- 
                        
                     mmap()
- 
                     
                     Enables ADI for mapped pages. For more information, see the mmap(2) man page.
- 
                        
                     pmap()
- 
                     
                     Reports which process mappings have ADI enabled. For more information, see the pmap(1) man page.
- 
                        
                     proc()
- 
                     
                     Provides information about the state of a ADI process. For more information, see the proc(5) man page.
- 
                        
                     putmsg()
- 
                     
                     Returns an error value if there is a version mismatch while the system is reading data from the buffer. For more information, see the putmsg(2) man page.
- 
                        
                     read()
- 
                     
                     Returns an error value if there is a version mismatch while the system is writing data to the buffer. For more information, see the read(2) man page.
- 
                        
                     siginfo()
- 
                     
                     Defines signal values for signals raised for ADI exceptions. For more information, see the siginfo(3HEAD) man page.
- 
                        
                     uiomove()
- 
                     
                     Returns an error value if a version mismatch is detected while the system is transferring data to or from the buffer. For more information, see the uiomove(9F) man page.
- 
                        
                     write()
- 
                     
                     Returns an error value if a version mismatch is detected while the system is reading data from the buffer. For more information, see the write(2) man page.