Security Coding Module Integer Error – “You Can’T Count That High” – CS1

Total Page:16

File Type:pdf, Size:1020Kb

Security Coding Module Integer Error – “You Can’T Count That High” – CS1 Security Coding Module Integer Error – “You Can’t Count That High” – CS1 Summary: Integer values that are too large or too small may fall outside the allowable range for their data type, leading to undefined behavior that can both reduce the robustness of your code and lead to security vulnerabilities. Description: Declaring a variable as type int allocates a fixed amount of space in memory. Most languages include several integer types, including short, int, long, etc. , to allow for less or more storage. The amount of space allocated limits the range of values that can be stored. For example, a 32-bit int variable can hold values from -231 through 231-1. Input or mathematical operations such as addition, subtraction, and multiplication may lead to values that are outside of this range. This results in an integer error or overflow, which causes undefined behavior and the resulting value will likely not be what the programmer intended. Integer overflow is a common cause of software errors and vulnerabilities. Risk – How Can It Happen? An integer error can lead to unexpected behavior or may be exploited to cause a program crash, corrupt data, or allow the execution of malicious software. Example of Occurrence: 1. There is a Facebook group called “If this group reaches 4,294,967,296 it might cause an integer overflow.” This value is the largest number that can fit in a 32 bit unsigned integer. If the number of members of the group exceeded this number, it might cause an overflow. Whether it will cause an overflow or not depends upon how Facebook is implemented and which language is used – they might use data types that can hold larger numbers. In any case, the chances of an overflow seem remote, as roughly 2/3 of the people on earth would be required to reach the goal of more than 4 billion members. 2. On December 25, 2004, Comair airlines was forced to ground 1,100 flights after its flight crew scheduling software crashed. The software used a 16-bit integer (max 32,768) to store the number of crew changes. That number was exceeded due to bad weather that month which led to numerous crew reassignments. 3. Many Unix operating systems store time values in 32-bit signed (positive or negative) integers, counting the number of seconds since midnight on January 1, 1970. On Tuesday, January 19, 2038, this value will overflow, becoming a negative number. Although the impact of this problem in 2038 is not yet known, there are concerns that software that projects out to future dates – including tools for mortgage payment and retirement fund distribution – might face problems long before then. Source: Year 2038 Problem” http://en.wikipedia.org/wiki/Year_2038_problem Code Responsibly– How Can I Avoid Integer Error? 1. Know your limits: Familiarize yourself with the ranges available for each data type. Since the size of C++ data types is compiler and machine dependent, it is a good idea to run the following program to show you the limits of each variable type. 1. Choose your data types carefully: Many programming languages include multiple data types for storing integer values. If you have any concerns about the integer values that you will be using, learn about the options available in the language you are using, and choose integer types that are large enough to hold the values you will be using. One useful strategy for reducing integer errors is to declare any variable that is used to represent the size of an object, including integer values used as sizes, indices, loop counters, and lengths, as size_t. The size_t type is the unsigned integer type. 2. Validate your input: Check input for ranges and reasonableness before conducting operations.(More on this in future modules.) Laboratory Assignment 1. Type* the program under the ‘know your limits’ section above. Compile and run (You may see warnings about unused variables. Ignore these for now, they will be fixed later). 2. Examine the output. What is the largest possible integer value? What is the largest possible short integer? 3. Type* the lines below into the program. cout << "Input an integer value " << endl; cin >> i; cout << "Enter a character value " << endl; cin >> ch; cout << "Enter a short value " << endl; cin >> sh; cout << "Enter an unsigned short value " << endl; cin >> us; cout << "Enter a long value " << endl; cin >> lon; cout << endl << "You entered the following values: " << endl; cout << "integer: " << i << endl; cout << "character: " << ch << endl; cout << "short: " << sh << endl; cout << "unsigned short: " << us << endl; cout << "long: " << lon << endl; Compile and run. Enter valid values at each prompt. 4. Run again with “invalid” values. For example, what is the smallest positive value for the short that leads to an error? 5. Add the following lines to the end of the program: sh = sh *10; cout << "Ten times short value: sh = "<< sh << endl; Enter the value 4000 for the short. Try 3277. Explain the output. What happens when an integer error occurs ? 6. Add the following lines to the end of the program: cout << "INTEGER OVERFLOW: i = " << INT_MAX + 1 << endl; Compile and run. Explain the output. 7. Print one of the programs you completed for your lab today that includes integers. Submit marked program and completed checklist. *Copying and pasting programs may result in syntax errors and other inconsistencies. It is recommended you type each program. Security Checklist Vulnerability: Integer Errors Course: CS1 Check each line of code Completed 1. Underline each occurrence of an integer variable. For each underlined variable: 2. Mark with a V any input operations that assign values to the variable. 3. Mark with a V any mathematical operations involving the variable. 4. Mark with a V any assignments made to the variable. Highlighted areas indicate vulnerabilities! Discussion Questions 1. In your own words, describe an integer error. 2. How could an integer overflow error occur in your program? 3. What happens when an integer error occurs? 4. Why is multiplication particularly risky? 5. Overflow can also occur when the dividend is equal to the minimum (negative) value for the signed integer type and the divisor is equal to -1. Demonstrate this problem adding the following lines to the end of the above program. cout << "INTEGER OVERFLOW: i = " << INT_MIN/-1 << endl; Further Work (optional – check with your instructor if you need to answer the following questions) 1. For each of the following give the appropriate Java declaration: o Number of students at your college o Population of Baltimore 637,455 o Population of Maryland 5.6 million o the world population (6.6 billion) 2. Name three things you might do in your next program to prevent an integer error from occurring. .
Recommended publications
  • On the Cohen-Macaulay Modules of Graded Subrings
    TRANSACTIONS OF THE AMERICAN MATHEMATICAL SOCIETY Volume 357, Number 2, Pages 735{756 S 0002-9947(04)03562-7 Article electronically published on April 27, 2004 ON THE COHEN-MACAULAY MODULES OF GRADED SUBRINGS DOUGLAS HANES Abstract. We give several characterizations for the linearity property for a maximal Cohen-Macaulay module over a local or graded ring, as well as proofs of existence in some new cases. In particular, we prove that the existence of such modules is preserved when taking Segre products, as well as when passing to Veronese subrings in low dimensions. The former result even yields new results on the existence of finitely generated maximal Cohen-Macaulay modules over non-Cohen-Macaulay rings. 1. Introduction and definitions The notion of a linear maximal Cohen-Macaulay module over a local ring (R; m) was introduced by Ulrich [17], who gave a simple characterization of the Gorenstein property for a Cohen-Macaulay local ring possessing a maximal Cohen-Macaulay module which is sufficiently close to being linear, as defined below. A maximal Cohen-Macaulay module (abbreviated MCM module)overR is one whose depth is equal to the Krull dimension of the ring R. All modules to be considered in this paper are assumed to be finitely generated. The minimal number of generators of an R-module M, which is equal to the (R=m)-vector space dimension of M=mM, will be denoted throughout by ν(M). In general, the length of a finitely generated Artinian module M is denoted by `(M)(orby`R(M), if it is necessary to specify the ring acting on M).
    [Show full text]
  • Understanding Integer Overflow in C/C++
    Appeared in Proceedings of the 34th International Conference on Software Engineering (ICSE), Zurich, Switzerland, June 2012. Understanding Integer Overflow in C/C++ Will Dietz,∗ Peng Li,y John Regehr,y and Vikram Adve∗ ∗Department of Computer Science University of Illinois at Urbana-Champaign fwdietz2,[email protected] ySchool of Computing University of Utah fpeterlee,[email protected] Abstract—Integer overflow bugs in C and C++ programs Detecting integer overflows is relatively straightforward are difficult to track down and may lead to fatal errors or by using a modified compiler to insert runtime checks. exploitable vulnerabilities. Although a number of tools for However, reliable detection of overflow errors is surprisingly finding these bugs exist, the situation is complicated because not all overflows are bugs. Better tools need to be constructed— difficult because overflow behaviors are not always bugs. but a thorough understanding of the issues behind these errors The low-level nature of C and C++ means that bit- and does not yet exist. We developed IOC, a dynamic checking tool byte-level manipulation of objects is commonplace; the line for integer overflows, and used it to conduct the first detailed between mathematical and bit-level operations can often be empirical study of the prevalence and patterns of occurrence quite blurry. Wraparound behavior using unsigned integers of integer overflows in C and C++ code. Our results show that intentional uses of wraparound behaviors are more common is legal and well-defined, and there are code idioms that than is widely believed; for example, there are over 200 deliberately use it.
    [Show full text]
  • Modules and Lie Semialgebras Over Semirings with a Negation Map 3
    MODULES AND LIE SEMIALGEBRAS OVER SEMIRINGS WITH A NEGATION MAP GUY BLACHAR Abstract. In this article, we present the basic definitions of modules and Lie semialgebras over semirings with a negation map. Our main example of a semiring with a negation map is ELT algebras, and some of the results in this article are formulated and proved only in the ELT theory. When dealing with modules, we focus on linearly independent sets and spanning sets. We define a notion of lifting a module with a negation map, similarly to the tropicalization process, and use it to prove several theorems about semirings with a negation map which possess a lift. In the context of Lie semialgebras over semirings with a negation map, we first give basic definitions, and provide parallel constructions to the classical Lie algebras. We prove an ELT version of Cartan’s criterion for semisimplicity, and provide a counterexample for the naive version of the PBW Theorem. Contents Page 0. Introduction 2 0.1. Semirings with a Negation Map 2 0.2. Modules Over Semirings with a Negation Map 3 0.3. Supertropical Algebras 4 0.4. Exploded Layered Tropical Algebras 4 1. Modules over Semirings with a Negation Map 5 1.1. The Surpassing Relation for Modules 6 1.2. Basic Definitions for Modules 7 1.3. -morphisms 9 1.4. Lifting a Module Over a Semiring with a Negation Map 10 1.5. Linearly Independent Sets 13 1.6. d-bases and s-bases 14 1.7. Free Modules over Semirings with a Negation Map 18 2.
    [Show full text]
  • Irreducible Representations of Finite Monoids
    U.U.D.M. Project Report 2019:11 Irreducible representations of finite monoids Christoffer Hindlycke Examensarbete i matematik, 30 hp Handledare: Volodymyr Mazorchuk Examinator: Denis Gaidashev Mars 2019 Department of Mathematics Uppsala University Irreducible representations of finite monoids Christoffer Hindlycke Contents Introduction 2 Theory 3 Finite monoids and their structure . .3 Introductory notions . .3 Cyclic semigroups . .6 Green’s relations . .7 von Neumann regularity . 10 The theory of an idempotent . 11 The five functors Inde, Coinde, Rese,Te and Ne ..................... 11 Idempotents and simple modules . 14 Irreducible representations of a finite monoid . 17 Monoid algebras . 17 Clifford-Munn-Ponizovski˘ıtheory . 20 Application 24 The symmetric inverse monoid . 24 Calculating the irreducible representations of I3 ........................ 25 Appendix: Prerequisite theory 37 Basic definitions . 37 Finite dimensional algebras . 41 Semisimple modules and algebras . 41 Indecomposable modules . 42 An introduction to idempotents . 42 1 Irreducible representations of finite monoids Christoffer Hindlycke Introduction This paper is a literature study of the 2016 book Representation Theory of Finite Monoids by Benjamin Steinberg [3]. As this book contains too much interesting material for a simple master thesis, we have narrowed our attention to chapters 1, 4 and 5. This thesis is divided into three main parts: Theory, Application and Appendix. Within the Theory chapter, we (as the name might suggest) develop the necessary theory to assist with finding irreducible representations of finite monoids. Finite monoids and their structure gives elementary definitions as regards to finite monoids, and expands on the basic theory of their structure. This part corresponds to chapter 1 in [3]. The theory of an idempotent develops just enough theory regarding idempotents to enable us to state a key result, from which the principal result later follows almost immediately.
    [Show full text]
  • Collecting Vulnerable Source Code from Open-Source Repositories for Dataset Generation
    applied sciences Article Collecting Vulnerable Source Code from Open-Source Repositories for Dataset Generation Razvan Raducu * , Gonzalo Esteban , Francisco J. Rodríguez Lera and Camino Fernández Grupo de Robótica, Universidad de León. Avenida Jesuitas, s/n, 24007 León, Spain; [email protected] (G.E.); [email protected] (F.J.R.L.); [email protected] (C.F.) * Correspondence: [email protected] Received:29 December 2019; Accepted: 7 February 2020; Published: 13 February 2020 Abstract: Different Machine Learning techniques to detect software vulnerabilities have emerged in scientific and industrial scenarios. Different actors in these scenarios aim to develop algorithms for predicting security threats without requiring human intervention. However, these algorithms require data-driven engines based on the processing of huge amounts of data, known as datasets. This paper introduces the SonarCloud Vulnerable Code Prospector for C (SVCP4C). This tool aims to collect vulnerable source code from open source repositories linked to SonarCloud, an online tool that performs static analysis and tags the potentially vulnerable code. The tool provides a set of tagged files suitable for extracting features and creating training datasets for Machine Learning algorithms. This study presents a descriptive analysis of these files and overviews current status of C vulnerabilities, specifically buffer overflow, in the reviewed public repositories. Keywords: vulnerability; sonarcloud; bot; source code; repository; buffer overflow 1. Introduction In November 1988 the Internet suffered what is publicly known as “the first successful buffer overflow exploitation”. The exploit took advantage of the absence of buffer range-checking in one of the functions implemented in the fingerd daemon [1,2]. Even though it is considered to be the first exploited buffer overflow, different researchers had been working on buffer overflow for years.
    [Show full text]
  • A Topology for Operator Modules Over W*-Algebras Bojan Magajna
    Journal of Functional AnalysisFU3203 journal of functional analysis 154, 1741 (1998) article no. FU973203 A Topology for Operator Modules over W*-Algebras Bojan Magajna Department of Mathematics, University of Ljubljana, Jadranska 19, Ljubljana 1000, Slovenia E-mail: Bojan.MagajnaÄuni-lj.si Received July 23, 1996; revised February 11, 1997; accepted August 18, 1997 dedicated to professor ivan vidav in honor of his eightieth birthday Given a von Neumann algebra R on a Hilbert space H, the so-called R-topology is introduced into B(H), which is weaker than the norm and stronger than the COREultrastrong operator topology. A right R-submodule X of B(H) is closed in the Metadata, citation and similar papers at core.ac.uk Provided byR Elsevier-topology - Publisher if and Connector only if for each b #B(H) the right ideal, consisting of all a # R such that ba # X, is weak* closed in R. Equivalently, X is closed in the R-topology if and only if for each b #B(H) and each orthogonal family of projections ei in R with the sum 1 the condition bei # X for all i implies that b # X. 1998 Academic Press 1. INTRODUCTION Given a C*-algebra R on a Hilbert space H, a concrete operator right R-module is a subspace X of B(H) (the algebra of all bounded linear operators on H) such that XRX. Such modules can be characterized abstractly as L -matricially normed spaces in the sense of Ruan [21], [11] which are equipped with a completely contractive R-module multi- plication (see [6] and [9]).
    [Show full text]
  • On Finite Semifields with a Weak Nucleus and a Designed
    On finite semifields with a weak nucleus and a designed automorphism group A. Pi~nera-Nicol´as∗ I.F. R´uay Abstract Finite nonassociative division algebras S (i.e., finite semifields) with a weak nucleus N ⊆ S as defined by D.E. Knuth in [10] (i.e., satisfying the conditions (ab)c − a(bc) = (ac)b − a(cb) = c(ab) − (ca)b = 0, for all a; b 2 N; c 2 S) and a prefixed automorphism group are considered. In particular, a construction of semifields of order 64 with weak nucleus F4 and a cyclic automorphism group C5 is introduced. This construction is extended to obtain sporadic finite semifields of orders 256 and 512. Keywords: Finite Semifield; Projective planes; Automorphism Group AMS classification: 12K10, 51E35 1 Introduction A finite semifield S is a finite nonassociative division algebra. These rings play an important role in the context of finite geometries since they coordinatize projective semifield planes [7]. They also have applications on coding theory [4, 8, 6], combinatorics and graph theory [13]. During the last few years, computational efforts in order to clasify some of these objects have been made. For instance, the classification of semifields with 64 elements is completely known, [16], as well as those with 243 elements, [17]. However, many questions are open yet: there is not a classification of semifields with 128 or 256 elements, despite of the powerful computers available nowadays. The knowledge of the structure of these concrete semifields can inspire new general constructions, as suggested in [9]. In this sense, the work of Lavrauw and Sheekey [11] gives examples of constructions of semifields which are neither twisted fields nor two-dimensional over a nucleus starting from the classification of semifields with 64 elements.
    [Show full text]
  • Modules Over the Steenrod Algebra
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Elsevier - Publisher Connector Tcwhcv’ Vol. 10. PD. 211-282. Pergamon Press, 1971. Printed in Great Britain MODULES OVER THE STEENROD ALGEBRA J. F. ADAMS and H. R. MARGOLIS (Received 4 November 1970 ; revised 26 March 197 1) 90. INTRODUCTION IN THIS paper we will investigate certain aspects of the structure of the mod 2 Steenrod algebra, A, and of modules over it. Because of the central role taken by the cohomology groups of spaces considered as A-modules in much of recent algebraic topology (e.g. [ 11, [2], [7]), it is not unreasonable to suppose that the algebraic structure that we elucidate will be of benefit in the study of topological problems. The main result of this paper, Theorem 3.1, gives a criterion for a module !M to be free over the Steenrod algebra, or over some subHopf algebra B of A. To describe this criterion consider a ring R and a left module over R, M; for e E R we define the map e: M -+ M by e(m) = em. If the element e satisfies the condition that e2 = 0 then im e c ker e, therefore we can define the homology group H(M, e) = ker elime. Then, for example, H(R, e) = 0 implies that H(F, e) = 0 for any free R-module F. We can now describe the criterion referred to above: for any subHopf algebra B of A there are elements e,-with ei2 = 0 and H(B, ei) = O-such that a connected B-module M is free over B if and only if H(M, ei) = 0 for all i.
    [Show full text]
  • RICH: Automatically Protecting Against Integer-Based Vulnerabilities
    RICH: Automatically Protecting Against Integer-Based Vulnerabilities David Brumley, Tzi-cker Chiueh, Robert Johnson [email protected], [email protected], [email protected] Huijia Lin, Dawn Song [email protected], [email protected] Abstract against integer-based attacks. Integer bugs appear because programmers do not antici- We present the design and implementation of RICH pate the semantics of C operations. The C99 standard [16] (Run-time Integer CHecking), a tool for efficiently detecting defines about a dozen rules governinghow integer types can integer-based attacks against C programs at run time. C be cast or promoted. The standard allows several common integer bugs, a popular avenue of attack and frequent pro- cases, such as many types of down-casting, to be compiler- gramming error [1–15], occur when a variable value goes implementation specific. In addition, the written rules are out of the range of the machine word used to materialize it, not accompanied by an unambiguous set of formal rules, e.g. when assigning a large 32-bit int to a 16-bit short. making it difficult for a programmer to verify that he un- We show that safe and unsafe integer operations in C can derstands C99 correctly. Integer bugs are not exclusive to be captured by well-known sub-typing theory. The RICH C. Similar languages such as C++, and even type-safe lan- compiler extension compiles C programs to object code that guages such as Java and OCaml, do not raise exceptions on monitors its own execution to detect integer-based attacks.
    [Show full text]
  • A Gentle Introduction to Rings and Modules
    What We Need to Know about Rings and Modules Class Notes for Mathematics 700 by Ralph Howard October 31, 1995 Contents 1 Rings 1 1.1 The De¯nition of a Ring ::::::::::::::::::::::::::::::: 1 1.2 Examples of Rings :::::::::::::::::::::::::::::::::: 3 1.2.1 The Integers :::::::::::::::::::::::::::::::::: 3 1.2.2 The Ring of Polynomials over a Field :::::::::::::::::::: 3 1.2.3 The Integers Modulo n ::::::::::::::::::::::::::: 4 1.3 Ideals in Rings :::::::::::::::::::::::::::::::::::: 4 2 Euclidean Domains 5 2.1 The De¯nition of Euclidean Domain ::::::::::::::::::::::::: 5 2.2 The Basic Examples of Euclidean Domains ::::::::::::::::::::: 5 2.3 Primes and Factorization in Euclidean Domains :::::::::::::::::: 6 3 Modules 8 3.1 The De¯nition of a Module :::::::::::::::::::::::::::::: 8 3.2 Examples of Modules ::::::::::::::::::::::::::::::::: 9 3.2.1 R and its Submodules. :::::::::::::::::::::::::::: 9 3.2.2 The Coordinate Space Rn. :::::::::::::::::::::::::: 9 3.2.3 Modules over the Polynomial Ring F[x] De¯ned by a Linear Map. :::: 10 3.3 Direct Sums of Submodules ::::::::::::::::::::::::::::: 10 1 Rings 1.1 The De¯nition of a Ring We have been working with ¯elds, which are the natural generalization of familiar objects like the real, rational and complex numbers where it is possible to add, subtract, multiply and divide. However there are some other very natural objects like the integers and polynomials over a ¯eld where we can add, subtract, and multiply, but where it not possible to divide. We will call such rings. Here is the o±cial de¯nition: De¯nition 1.1 A commutative ring (R; +; ¢) is a set R with two binary operations + and ¢ (as usual we will often write x ¢ y = xy) so that 1 1.
    [Show full text]
  • On Coatomic Semimodules Over Commutative Semirings
    C¸ankaya University Journal of Science and Engineering Volume 8 (2011), No. 2, 189{200 On Coatomic Semimodules over Commutative Semirings S. Ebrahimi Atani1 and F. Esmaeili Khalil Saraei1;∗ 1Department of Mathematics, University of Guilan, P.O. Box 1914, Rasht, Iran ∗Corresponding author: [email protected] Ozet.¨ Bu makale, de˘gi¸smelihalkalar ¨uzerindekikoatomik mod¨ullerve yarıbasit mod¨uller hakkında iyi bilinen bazı sonu¸cları,de˘gi¸smeli yarıhalkalar ¨uzerindekikoatomik ve yarıbasit yarımod¨ulleregenelle¸stirmi¸stir.Benzer sonu¸claraula¸smadakitemel zorluk, altyarımod¨ulle- rin sa˘glaması gereken ekstra ¨ozellikleriortaya ¸cıkarmaktır. Yarı mod¨ullerin¸calı¸sılmasında yarımod¨ullerin k-altyarımod¨ullerinin¨onemlioldukları ispatlanmı¸stır.y Anahtar Kelimeler. Yarıhalka, koatomik yarımod¨uller, yarıbasit yarımod¨uller, k-t¨um- lenmi¸syarımod¨uller. Abstract. This paper generalizes some well known results on coatomic and semisimple modules in commutative rings to coatomic and semisimple semimodules over commutative semirings. The main difficulty is figuring out what additional hypotheses the subsemimod- ules must satisfy to get similar results. It is proved that k-subsemimodules of semimodules are important in the study of semimodules. Keywords. Semiring, coatomic semimodules, semisimple semimodules, k-supplemented semimodules. 1. Introduction Study of semirings has been carried out by several authors since there are numerous applications of semirings in various branches of mathematics and computer sciences (see [6],[7] and [9]). It is well known that for a finitely generated module M, every proper submodule of M is contained in a maximal submodule. As an attempt to generalize this property of finitely generated modules we have coatomic modules. In [12], Z¨oschinger calls a module M coatomic if every proper submodule of M is contained in a maximal submodule of M.
    [Show full text]
  • Monoid Modules and Structured Document Algebra (Extendend Abstract)
    Monoid Modules and Structured Document Algebra (Extendend Abstract) Andreas Zelend Institut fur¨ Informatik, Universitat¨ Augsburg, Germany [email protected] 1 Introduction Feature Oriented Software Development (e.g. [3]) has been established in computer science as a general programming paradigm that provides formalisms, meth- ods, languages, and tools for building maintainable, customisable, and exten- sible software product lines (SPLs) [8]. An SPL is a collection of programs that share a common part, e.g., functionality or code fragments. To encode an SPL, one can use variation points (VPs) in the source code. A VP is a location in a pro- gram whose content, called a fragment, can vary among different members of the SPL. In [2] a Structured Document Algebra (SDA) is used to algebraically de- scribe modules that include VPs and their composition. In [4] we showed that we can reason about SDA in a more general way using a so called relational pre- domain monoid module (RMM). In this paper we present the following extensions and results: an investigation of the structure of transformations, e.g., a condi- tion when transformations commute, insights into the pre-order of modules, and new properties of predomain monoid modules. 2 Structured Document Algebra VPs and Fragments. Let V denote a set of VPs at which fragments may be in- serted and F(V) be the set of fragments which may, among other things, contain VPs from V. Elements of F(V) are denoted by f1, f2,... There are two special elements, a default fragment 0 and an error . An error signals an attempt to assign two or more non-default fragments to the same VP within one module.
    [Show full text]