blob: 6929f2e962f8b9c6196aa1bdc71d3f07b2e717a2 [file] [log] [blame]
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001<?xml version="1.0" encoding="utf-8"?>
2<rules version="1.0">
3
4<rule>
5 <id>
6 Added_Virtual_Method
7 </id>
8 <severity>
9 High
10 </severity>
11 <kind>
12 V-table
13 </kind>
14 <change>
15 Virtual method @target has been added to this class.
16 </change>
17 <effect>
18 The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
19 </effect>
20 <overcome>
21 You should add several padding virtual methods at end of class declaration and use them one by one in the course of interface evolution.
22 </overcome>
23</rule>
24
25<rule>
26 <id>
27 Added_Pure_Virtual_Method
28 </id>
29 <severity>
30 High
31 </severity>
32 <kind>
33 V-table
34 </kind>
35 <change>
36 Pure virtual method @target has been added to this class.
37 </change>
38 <effect>
39 1) Applications will not provide the implementation for this pure virtual method and therefore cause a crash in the library trying to call this method.
40 2) The layout of v-table has been changed. Call of any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
41 </effect>
42</rule>
43
44<rule>
45 <id>
46 Added_Virtual_Method_At_End_Of_Leaf_Copying_Class
47 </id>
48 <severity>
49 Medium
50 </severity>
51 <kind>
52 V-table
53 </kind>
54 <change>
55 Virtual method @target has been added to this class.
56 </change>
57 <effect>
58 The layout of v-table has been changed. This leaf class has no exported constructors and therefore applications will copy an old v-table of the class that will not contain a pointer to added virtual method. Call of any method in this class may result in crash or incorrect behavior of applications.
59 NOTE: if new virtual method is called only from other new methods, then binary compatibility should not be affected.
60 </effect>
61</rule>
62
63<rule>
64 <id>
65 Added_Virtual_Method_At_End_Of_Leaf_Allocable_Class
66 </id>
67 <severity>
68 Safe
69 </severity>
70 <kind>
71 V-table
72 </kind>
73 <change>
74 Virtual method @target has been added to this class.
75 </change>
76 <effect>
77 No effect. You can add virtual functions at end of leaf classes with exported constructors.
78 </effect>
79</rule>
80
81<rule>
82 <id>
83 Added_First_Virtual_Method
84 </id>
85 <severity>
86 High
87 </severity>
88 <kind>
89 V-table
90 </kind>
91 <change>
92 First virtual method @target has been added to this class.
93 </change>
94 <effect>
95 1) The layout of type structure has been shifted by @word_size bytes by the added v-table pointer.
96 2) Size of class has been increased by @word_size bytes.
97 </effect>
98</rule>
99
100<rule>
101 <id>
102 Removed_Virtual_Method
103 </id>
104 <severity>
105 High
106 </severity>
107 <kind>
108 V-table
109 </kind>
110 <change>
111 Virtual method @target has been removed from this class.
112 </change>
113 <effect>
114 The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
115 </effect>
116</rule>
117
118<rule>
119 <id>
120 Removed_Pure_Virtual_Method
121 </id>
122 <severity>
123 High
124 </severity>
125 <kind>
126 V-table
127 </kind>
128 <change>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +0400129 Pure virtual method @target has been removed from this class.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400130 </change>
131 <effect>
132 The layout of v-table has been changed. Call of this virtual method or any virtual method at higher position in this class or its subclasses may result in crash or incorrect behavior of applications.
133 </effect>
134</rule>
135
136<rule>
137 <id>
138 Removed_Last_Virtual_Method
139 </id>
140 <severity>
141 High
142 </severity>
143 <kind>
144 V-table
145 </kind>
146 <change>
147 Last virtual method @target has been removed from this class.
148 </change>
149 <effect>
150 1) The layout of type structure has been shifted by @word_size bytes by the removed v-table pointer.
151 2) Size of class has been decreased by @word_size bytes.
152 </effect>
153</rule>
154
155<rule>
156 <id>
157 Virtual_Replacement
158 </id>
159 <severity>
160 Medium
161 </severity>
162 <kind>
163 V-table
164 </kind>
165 <change>
166 Virtual method @target has been added to this class instead of @old_value.
167 </change>
168 <effect>
169 Applications will pass parameters of older replaced method to newly added virtual method. This may result in crash or incorrect behavior of applications.
170 </effect>
171</rule>
172
173<rule>
174 <id>
175 Pure_Virtual_Replacement
176 </id>
177 <severity>
178 Medium
179 </severity>
180 <kind>
181 V-table
182 </kind>
183 <change>
184 Pure virtual method @target has been added to this class instead of @old_value.
185 </change>
186 <effect>
187 Applications will provide an older method to the library instead of expected newely added virtual method. This may result in crash or incorrect behavior of applications.
188 </effect>
189</rule>
190
191<rule>
192 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400193 Virtual_Table_Changed_Unknown
194 </id>
195 <severity>
196 Medium
197 </severity>
198 <kind>
199 V-table
200 </kind>
201 <change>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +0400202 The layout of v-table has been changed for **unknown** reason.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400203 </change>
204 <effect>
205 Call of any method in this class may result in crash or incorrect behavior of applications.
206 </effect>
207</rule>
208
209<rule>
210 <id>
211 Virtual_Method_Position
212 </id>
213 <severity>
214 High
215 </severity>
216 <kind>
217 V-table
218 </kind>
219 <change>
220 The relative position of virtual method @target has been changed from @old_value to @new_value.
221 </change>
222 <effect>
223 The layout of v-table has been changed. Call of this virtual method may result in crash or incorrect behavior of applications.
224 </effect>
225</rule>
226
227<rule>
228 <id>
229 Pure_Virtual_Method_Position
230 </id>
231 <severity>
232 High
233 </severity>
234 <kind>
235 V-table
236 </kind>
237 <change>
238 The relative position of pure virtual method @target has been changed from @old_value to @new_value.
239 </change>
240 <effect>
241 The layout of v-table has been changed. Call of this pure virtual method implementation may result in crash or incorrect behavior of applications.
242 </effect>
243</rule>
244
245<rule>
246 <id>
247 Overridden_Virtual_Method
248 </id>
249 <severity>
250 Low
251 </severity>
252 <kind>
253 V-table
254 </kind>
255 <change>
256 Virtual method @old_value has been overridden by @new_value.
257 </change>
258 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +0400259 Method @new_value will be called instead of @old_value by old applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400260 </effect>
261</rule>
262
263<rule>
264 <id>
265 Overridden_Virtual_Method_B
266 </id>
267 <severity>
268 Low
269 </severity>
270 <kind>
271 V-table
272 </kind>
273 <change>
274 Virtual method @old_value has been overridden by @new_value.
275 </change>
276 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +0400277 Method @new_value will be called instead of @old_value by old applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400278 </effect>
279</rule>
280
281<rule>
282 <id>
283 Size_Of_Allocable_Class_Increased
284 </id>
285 <severity>
286 High
287 </severity>
288 <kind>
289 Classes
290 </kind>
291 <change>
292 Size of this class has been increased from @old_size to @new_size.
293 </change>
294 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +0400295 1) An object of this class can be allocated by the applications and old size will be hardcoded at the compile time. Call of any exported constructor will break the memory of neighboring objects on the stack or heap.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400296 2) The memory layout and size of subclasses will be changed.
297 </effect>
298</rule>
299
300<rule>
301 <id>
302 Size_Of_Allocable_Class_Decreased
303 </id>
304 <severity>
305 Medium
306 </severity>
307 <kind>
308 Classes
309 </kind>
310 <change>
311 Size of this class has been decreased from @old_size to @new_size.
312 </change>
313 <effect>
314 Previous accesses of applications to public fields of this class or its subclasses may be incorrect.
315 </effect>
316</rule>
317
318<rule>
319 <id>
320 Size_Of_Copying_Class
321 </id>
322 <severity>
323 High
324 </severity>
325 <kind>
326 Classes
327 </kind>
328 <change>
329 Size of this class has been changed from @old_size to @new_size.
330 </change>
331 <effect>
332 1) The class has only inline or auto-generated constructors which will be copied to applications at compile time and will allocate an older memory layout. Call of any exported method of this class may access a memory outside the allocated objects or inside the older memory structure and result in crash or incorrect behavior of applications.
333 2) The memory layout and size of subclasses will be changed.
334 </effect>
335</rule>
336
337<rule>
338 <id>
339 Base_Class_Position
340 </id>
341 <severity>
342 Low
343 </severity>
344 <kind>
345 Classes
346 </kind>
347 <change>
348 The relative position of class @target has been changed from @old_value to @new_value in the list of base classes.
349 </change>
350 <effect>
351 Possible incorrect access of applications to the memory occupied by the base classes.
352 </effect>
353</rule>
354
355<rule>
356 <id>
357 Base_Class_Became_Virtually_Inherited
358 </id>
359 <severity>
360 Medium
361 </severity>
362 <kind>
363 Classes
364 </kind>
365 <change>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +0400366 Base class @target became **virtually** inherited.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400367 </change>
368 <effect>
369 Size, memory layout and v-table layout of this class and subclasses may change.
370 </effect>
371</rule>
372
373<rule>
374 <id>
375 Base_Class_Became_Non_Virtually_Inherited
376 </id>
377 <severity>
378 Medium
379 </severity>
380 <kind>
381 Classes
382 </kind>
383 <change>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +0400384 Base class @target became **non-virtually** inherited.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400385 </change>
386 <effect>
387 Size, memory layout and v-table layout of this class and subclasses may change.
388 </effect>
389</rule>
390
391<rule>
392 <id>
393 Added_Base_Class_And_Shift
394 </id>
395 <severity>
396 High
397 </severity>
398 <kind>
399 Classes
400 </kind>
401 <change>
402 Base class @target has been added.
403 </change>
404 <effect>
405 The memory layout in this class has been shifted by @shift bytes.
406 </effect>
407</rule>
408
409<rule>
410 <id>
411 Added_Base_Class_And_Size
412 </id>
413 <severity>
414 High
415 </severity>
416 <kind>
417 Classes
418 </kind>
419 <change>
420 Base class @target has been added.
421 </change>
422 <effect>
423 1) Size of the class has been changed from @old_size to @new_size.
424 2) The memory layout in this class has been shifted by @shift bytes.
425 </effect>
426</rule>
427
428<rule>
429 <id>
430 Added_Base_Class_And_Shift_And_VTable
431 </id>
432 <severity>
433 High
434 </severity>
435 <kind>
436 Classes
437 </kind>
438 <change>
439 Base class @target has been added.
440 </change>
441 <effect>
442 1) The layout of v-table in this class has been changed.
443 2) The memory layout in this class has been shifted by @shift bytes.
444 </effect>
445</rule>
446
447<rule>
448 <id>
449 Added_Base_Class_And_Size_And_VTable
450 </id>
451 <severity>
452 High
453 </severity>
454 <kind>
455 Classes
456 </kind>
457 <change>
458 Base class @target has been added.
459 </change>
460 <effect>
461 1) The layout of v-table in this class has been changed.
462 2) Size of the class has been changed from @old_size to @new_size.
463 3) The memory layout in this class has been shifted by @shift bytes.
464 </effect>
465</rule>
466
467<rule>
468 <id>
469 Added_Base_Class_And_VTable
470 </id>
471 <severity>
472 High
473 </severity>
474 <kind>
475 Classes
476 </kind>
477 <change>
478 Base class @target has been added.
479 </change>
480 <effect>
481 The layout of v-table in this class has been changed.
482 </effect>
483</rule>
484
485<rule>
486 <id>
487 Added_Base_Class
488 </id>
489 <severity>
490 Low
491 </severity>
492 <kind>
493 Classes
494 </kind>
495 <change>
496 Base class @target has been added.
497 </change>
498 <effect>
499 Possible incorrect access of applications to the memory occupied by the base classes.
500 </effect>
501</rule>
502
503<rule>
504 <id>
505 Removed_Base_Class_And_Size
506 </id>
507 <severity>
508 High
509 </severity>
510 <kind>
511 Classes
512 </kind>
513 <change>
514 Base class @target has been removed.
515 </change>
516 <effect>
517 1) Size of the class has been changed from @old_size to @new_size.
518 2) The memory layout in this class has been shifted by @shift bytes.
519 </effect>
520</rule>
521
522<rule>
523 <id>
524 Removed_Base_Class_And_Shift
525 </id>
526 <severity>
527 High
528 </severity>
529 <kind>
530 Classes
531 </kind>
532 <change>
533 Base class @target has been removed.
534 </change>
535 <effect>
536 The memory layout in this class has been shifted by @shift bytes.
537 </effect>
538</rule>
539
540<rule>
541 <id>
542 Removed_Base_Class_And_Shift_And_VTable
543 </id>
544 <severity>
545 High
546 </severity>
547 <kind>
548 Classes
549 </kind>
550 <change>
551 Base class @target has been removed.
552 </change>
553 <effect>
554 1) The layout of v-table in this class has been changed.
555 2) The memory layout in this class has been shifted by @shift bytes.
556 </effect>
557</rule>
558
559<rule>
560 <id>
561 Removed_Base_Class_And_Size_And_VTable
562 </id>
563 <severity>
564 High
565 </severity>
566 <kind>
567 Classes
568 </kind>
569 <change>
570 Base class @target has been removed.
571 </change>
572 <effect>
573 1) The layout of v-table in this class has been changed.
574 2) Size of the class has been changed from @old_size to @new_size.
575 3) The memory layout in this class has been shifted by @shift bytes.
576 </effect>
577</rule>
578
579<rule>
580 <id>
581 Removed_Base_Class_And_VTable
582 </id>
583 <severity>
584 High
585 </severity>
586 <kind>
587 Classes
588 </kind>
589 <change>
590 Base class @target has been removed.
591 </change>
592 <effect>
593 The layout of v-table in this class has been changed.
594 </effect>
595</rule>
596
597<rule>
598 <id>
599 Removed_Base_Class
600 </id>
601 <severity>
602 Low
603 </severity>
604 <kind>
605 Classes
606 </kind>
607 <change>
608 Base class @target has been removed.
609 </change>
610 <effect>
611 Possible incorrect access of applications to the memory occupied by the base classes.
612 </effect>
613</rule>
614
615<rule>
616 <id>
617 DataType_Size
618 </id>
619 <severity>
620 Low
621 </severity>
622 <kind>
623 Types
624 </kind>
625 <change>
626 Size of this type has been changed from @old_size to @new_size.
627 </change>
628 <effect>
629 The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
630 </effect>
631</rule>
632
633<rule>
634 <id>
635 DataType_Type
636 </id>
637 <severity>
638 Medium
639 </severity>
640 <kind>
641 Types
642 </kind>
643 <change>
644 Type of this type has been changed from @old_value to @new_value.
645 </change>
646 <effect>
647 The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
648 </effect>
649</rule>
650
651<rule>
652 <id>
653 DataType_Size_And_Stack
654 </id>
655 <severity>
656 High
657 </severity>
658 <kind>
659 Types
660 </kind>
661 <change>
662 Size of this type has been changed from @old_size to @new_size.
663 </change>
664 <effect>
665 Layout of parameter's stack of several functions has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
666 </effect>
667</rule>
668
669<rule>
670 <id>
671 Moved_Field
672 </id>
673 <severity>
674 Medium
675 </severity>
676 <kind>
677 Fields
678 </kind>
679 <change>
680 The relative position of field @target has been changed from @old_value to @new_value.
681 </change>
682 <effect>
683 Applications will access incorrect memory when attempting to access this field.
684 </effect>
685</rule>
686
687<rule>
688 <id>
689 Moved_Field_And_Size
690 </id>
691 <severity>
692 Medium
693 </severity>
694 <kind>
695 Fields
696 </kind>
697 <change>
698 The relative position of field @target has been changed from @old_value to @new_value.
699 </change>
700 <effect>
701 1) Applications will access incorrect memory when attempting to access this field.
702 2) Size of the inclusive type has been changed.
703 </effect>
704</rule>
705
706<rule>
707 <id>
708 Moved_Private_Field_And_Size
709 </id>
710 <severity>
711 Low
712 </severity>
713 <kind>
714 Fields
715 </kind>
716 <change>
717 The relative position of private field @target has been changed from @old_value to @new_value.
718 </change>
719 <effect>
720 Size of the inclusive type has been changed.
721 </effect>
722</rule>
723
724<rule>
725 <id>
726 Added_Field
727 </id>
728 <severity>
729 Low
730 </severity>
731 <kind>
732 Fields
733 </kind>
734 <change>
735 Field @target has been added to this type.
736 </change>
737 <effect>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +0400738 This field will not be initialized by old clients.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400739 NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
740 </effect>
741</rule>
742
743<rule>
744 <id>
745 Added_Field_And_Size
746 </id>
747 <severity>
748 Low
749 </severity>
750 <kind>
751 Fields
752 </kind>
753 <change>
754 Field @target has been added to this type.
755 </change>
756 <effect>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +0400757 1) This field will not be initialized by old clients.
758 2) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +0400759 NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
760 </effect>
761</rule>
762
763<rule>
764 <id>
765 Added_Field_And_Layout
766 </id>
767 <severity>
768 Medium
769 </severity>
770 <kind>
771 Fields
772 </kind>
773 <change>
774 Field @target has been added at the middle position of this structural type.
775 </change>
776 <effect>
777 Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
778 </effect>
779</rule>
780
781<rule>
782 <id>
783 Added_Field_And_Layout_And_Size
784 </id>
785 <severity>
786 Medium
787 </severity>
788 <kind>
789 Fields
790 </kind>
791 <change>
792 Field @target has been added at the middle position of this structural type.
793 </change>
794 <effect>
795 1) Size of the inclusive type has been changed.
796 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
797 </effect>
798</rule>
799
800<rule>
801 <id>
802 Added_Private_Field_And_Size
803 </id>
804 <severity>
805 Low
806 </severity>
807 <kind>
808 Fields
809 </kind>
810 <change>
811 Field @target has been added to this type.
812 </change>
813 <effect>
814 Size of the inclusive type has been changed.
815 NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
816 </effect>
817</rule>
818
819<rule>
820 <id>
821 Added_Private_Field_And_Layout
822 </id>
823 <severity>
824 Medium
825 </severity>
826 <kind>
827 Fields
828 </kind>
829 <change>
830 Field @target has been added at the middle position of this structural type.
831 </change>
832 <effect>
833 Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
834 </effect>
835</rule>
836
837<rule>
838 <id>
839 Added_Private_Field_And_Layout_And_Size
840 </id>
841 <severity>
842 Medium
843 </severity>
844 <kind>
845 Fields
846 </kind>
847 <change>
848 Field @target has been added at the middle position of this structural type.
849 </change>
850 <effect>
851 1) Size of the inclusive type has been changed.
852 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
853 </effect>
854</rule>
855
856<rule>
857 <id>
858 Added_Union_Field_And_Size
859 </id>
860 <severity>
861 Medium
862 </severity>
863 <kind>
864 Fields
865 </kind>
866 <change>
867 Field @target has been added to this type.
868 </change>
869 <effect>
870 Size of the union has been changed.
871 NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
872 </effect>
873</rule>
874
875<rule>
876 <id>
877 Added_Union_Field
878 </id>
879 <severity>
880 Low
881 </severity>
882 <kind>
883 Fields
884 </kind>
885 <change>
886 Field @target has been added to this type.
887 </change>
888 <effect>
889 NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications.
890 </effect>
891</rule>
892
893<rule>
894 <id>
895 Removed_Field
896 </id>
897 <severity>
898 Medium
899 </severity>
900 <kind>
901 Fields
902 </kind>
903 <change>
904 Field @target has been removed from this type.
905 </change>
906 <effect>
907 Applications will access incorrect memory when attempting to access this field.
908 </effect>
909</rule>
910
911<rule>
912 <id>
913 Removed_Field_And_Layout
914 </id>
915 <severity>
916 Medium
917 </severity>
918 <kind>
919 Fields
920 </kind>
921 <change>
922 Field @target has been removed from the middle position of this structural type.
923 </change>
924 <effect>
925 1) Applications will access incorrect memory when attempting to access this field.
926 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
927 </effect>
928</rule>
929
930<rule>
931 <id>
932 Removed_Field_And_Size
933 </id>
934 <severity>
935 Medium
936 </severity>
937 <kind>
938 Fields
939 </kind>
940 <change>
941 Field @target has been removed from this type.
942 </change>
943 <effect>
944 1) Applications will access incorrect memory when attempting to access this field.
945 2) Size of the inclusive type has been changed.
946 </effect>
947</rule>
948
949<rule>
950 <id>
951 Removed_Field_And_Layout_And_Size
952 </id>
953 <severity>
954 High
955 </severity>
956 <kind>
957 Fields
958 </kind>
959 <change>
960 Field @target has been removed from the middle position of this structural type.
961 </change>
962 <effect>
963 1) Previous accesses of applications to the removed field will be incorrect.
964 2) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
965 </effect>
966</rule>
967
968<rule>
969 <id>
970 Removed_Private_Field_And_Size
971 </id>
972 <severity>
973 Low
974 </severity>
975 <kind>
976 Fields
977 </kind>
978 <change>
979 Field @target has been removed from this type.
980 </change>
981 <effect>
982 Size of the inclusive type has been changed.
983 </effect>
984</rule>
985
986<rule>
987 <id>
988 Removed_Private_Field_And_Layout
989 </id>
990 <severity>
991 Medium
992 </severity>
993 <kind>
994 Fields
995 </kind>
996 <change>
997 Field @target has been removed from the middle position of this structural type.
998 </change>
999 <effect>
1000 Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
1001 </effect>
1002</rule>
1003
1004<rule>
1005 <id>
1006 Removed_Private_Field_And_Layout_And_Size
1007 </id>
1008 <severity>
1009 Medium
1010 </severity>
1011 <kind>
1012 Fields
1013 </kind>
1014 <change>
1015 Field @target has been removed from the middle position of this structural type.
1016 </change>
1017 <effect>
1018 1) Layout of structure fields has been changed and therefore fields at higher positions of the structure definition may be incorrectly accessed by applications.
1019 2) Size of the inclusive type has been changed.
1020 </effect>
1021</rule>
1022
1023<rule>
1024 <id>
1025 Removed_Union_Field_And_Size
1026 </id>
1027 <severity>
1028 Medium
1029 </severity>
1030 <kind>
1031 Fields
1032 </kind>
1033 <change>
1034 Field @target has been removed from this union.
1035 </change>
1036 <effect>
1037 1) Applications may access incorrect memory when attempting to access this field.
1038 2) Size of the union has been changed.
1039 </effect>
1040</rule>
1041
1042<rule>
1043 <id>
1044 Removed_Union_Field
1045 </id>
1046 <severity>
1047 Low
1048 </severity>
1049 <kind>
1050 Fields
1051 </kind>
1052 <change>
1053 Field @target has been removed from this union.
1054 </change>
1055 <effect>
1056 Applications may access incorrect memory when attempting to access this field.
1057 </effect>
1058</rule>
1059
1060<rule>
1061 <id>
1062 Renamed_Field
1063 </id>
1064 <severity>
1065 Low
1066 </severity>
1067 <kind>
1068 Fields
1069 </kind>
1070 <change>
1071 Field @target has been renamed to @new_value.
1072 </change>
1073 <effect>
1074 Renaming of a field in data type may indicate a change in the semantic meaning of the field.
1075 </effect>
1076</rule>
1077
1078<rule>
1079 <id>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +04001080 Used_Reserved_Field
1081 </id>
1082 <severity>
1083 Low
1084 </severity>
1085 <kind>
1086 Fields
1087 </kind>
1088 <change>
1089 Reserved field @target has been replaced by @new_value.
1090 </change>
1091 <effect>
1092 This field will not be initialized by old clients.
1093 </effect>
1094</rule>
1095
1096<rule>
1097 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001098 Enum_Member_Value
1099 </id>
1100 <severity>
1101 Medium
1102 </severity>
1103 <kind>
1104 Constants
1105 </kind>
1106 <change>
1107 Value of member @target has been changed from @old_value to @new_value.
1108 </change>
1109 <effect>
1110 Applications may execute a wrong branch of code in the library and therefore change the behavior.
1111 </effect>
1112</rule>
1113
1114<rule>
1115 <id>
1116 Enum_Member_Removed
1117 </id>
1118 <severity>
1119 Low
1120 </severity>
1121 <kind>
1122 Constants
1123 </kind>
1124 <change>
1125 The member @target has been removed.
1126 </change>
1127 <effect>
1128 This may result in crash or incorrect behavior of applications because the library may not handle removed member anymore.
1129 </effect>
1130</rule>
1131
1132<rule>
1133 <id>
1134 Enum_Last_Member_Value
1135 </id>
1136 <severity>
1137 Low
1138 </severity>
1139 <kind>
1140 Constants
1141 </kind>
1142 <change>
1143 Value of member @target has been changed from @old_value to @new_value.
1144 </change>
1145 <effect>
1146 Applications may execute a wrong branch of code in the library and therefore change the behavior.
1147 </effect>
1148</rule>
1149
1150<rule>
1151 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001152 Enum_Private_Member_Value
1153 </id>
1154 <severity>
1155 Safe
1156 </severity>
1157 <kind>
1158 Constants
1159 </kind>
1160 <change>
1161 Value of private member @target has been changed from @old_value to @new_value.
1162 </change>
1163 <effect>
1164 No effect.
1165 </effect>
1166</rule>
1167
1168<rule>
1169 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001170 Enum_Member_Name
1171 </id>
1172 <severity>
1173 Low
1174 </severity>
1175 <kind>
1176 Constants
1177 </kind>
1178 <change>
1179 Name of member with value @target has been changed from @old_value to @new_value.
1180 </change>
1181 <effect>
1182 Applications may execute a wrong branch of code in the library and therefore change the behavior.
1183 </effect>
1184</rule>
1185
1186<rule>
1187 <id>
1188 Field_Type
1189 </id>
1190 <severity>
1191 Low
1192 </severity>
1193 <kind>
1194 Fields
1195 </kind>
1196 <change>
1197 Type of field @target has been changed from @old_value to @new_value.
1198 </change>
1199 <effect>
1200 Replacement of the field data type may indicate a change in the semantic meaning of the field.
1201 </effect>
1202</rule>
1203
1204<rule>
1205 <id>
1206 Field_Type_And_Size
1207 </id>
1208 <severity>
1209 Medium
1210 </severity>
1211 <kind>
1212 Fields
1213 </kind>
1214 <change>
1215 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1216 </change>
1217 <effect>
1218 This field may be incorrectly initialized or accessed by applications.
1219 </effect>
1220</rule>
1221
1222<rule>
1223 <id>
1224 Field_Type_And_Size_And_Layout
1225 </id>
1226 <severity>
1227 Medium
1228 </severity>
1229 <kind>
1230 Fields
1231 </kind>
1232 <change>
1233 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1234 </change>
1235 <effect>
1236 Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1237 </effect>
1238</rule>
1239
1240<rule>
1241 <id>
1242 Field_Type_And_Size_And_Type_Size
1243 </id>
1244 <severity>
1245 Medium
1246 </severity>
1247 <kind>
1248 Fields
1249 </kind>
1250 <change>
1251 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1252 </change>
1253 <effect>
1254 1) This field may be incorrectly initialized or accessed by applications.
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001255 2) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001256 </effect>
1257</rule>
1258
1259<rule>
1260 <id>
1261 Field_Type_And_Size_And_Layout_And_Type_Size
1262 </id>
1263 <severity>
1264 Medium
1265 </severity>
1266 <kind>
1267 Fields
1268 </kind>
1269 <change>
1270 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1271 </change>
1272 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001273 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001274 2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1275 </effect>
1276</rule>
1277
1278<rule>
1279 <id>
1280 Private_Field_Type_And_Size_And_Layout
1281 </id>
1282 <severity>
1283 Medium
1284 </severity>
1285 <kind>
1286 Fields
1287 </kind>
1288 <change>
1289 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1290 </change>
1291 <effect>
1292 Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1293 </effect>
1294</rule>
1295
1296<rule>
1297 <id>
Andrey Ponomarenkod2ed4c62014-03-05 17:34:32 +04001298 Private_Field_Type_And_Size
1299 </id>
1300 <severity>
1301 Safe
1302 </severity>
1303 <kind>
1304 Fields
1305 </kind>
1306 <change>
1307 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1308 </change>
1309 <effect>
1310 No effect.
1311 </effect>
1312</rule>
1313
1314<rule>
1315 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001316 Private_Field_Type_And_Size_And_Type_Size
1317 </id>
1318 <severity>
1319 Low
1320 </severity>
1321 <kind>
1322 Fields
1323 </kind>
1324 <change>
1325 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1326 </change>
1327 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001328 Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001329 </effect>
1330</rule>
1331
1332<rule>
1333 <id>
1334 Private_Field_Type_And_Size_And_Layout_And_Type_Size
1335 </id>
1336 <severity>
1337 Medium
1338 </severity>
1339 <kind>
1340 Fields
1341 </kind>
1342 <change>
1343 Type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1344 </change>
1345 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001346 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001347 2) Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1348 </effect>
1349</rule>
1350
1351<rule>
1352 <id>
1353 Field_BaseType_And_Size
1354 </id>
1355 <severity>
1356 Low
1357 </severity>
1358 <kind>
1359 Fields
1360 </kind>
1361 <change>
1362 Base type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1363 </change>
1364 <effect>
1365 Possible access of applications to incorrect memory through the pointer.
1366 </effect>
1367</rule>
1368
1369<rule>
1370 <id>
1371 Field_BaseType
1372 </id>
1373 <severity>
1374 Low
1375 </severity>
1376 <kind>
1377 Fields
1378 </kind>
1379 <change>
1380 Base type of field @target has been changed from @old_value to @new_value.
1381 </change>
1382 <effect>
1383 Replacement of field base type may indicate a change in the semantic meaning of the field.
1384 </effect>
1385</rule>
1386
1387<rule>
1388 <id>
1389 Field_PointerLevel_Increased
1390 </id>
1391 <severity>
1392 Medium
1393 </severity>
1394 <kind>
1395 Fields
1396 </kind>
1397 <change>
1398 The pointer level of field @target has been increased from @old_value to @new_value.
1399 </change>
1400 <effect>
1401 The library functions may try to access unallocated memory by the dereferencing of old field value and therefore cause a crash of applications.
1402 </effect>
1403</rule>
1404
1405<rule>
1406 <id>
1407 Field_PointerLevel_Decreased
1408 </id>
1409 <severity>
1410 Low
1411 </severity>
1412 <kind>
1413 Fields
1414 </kind>
1415 <change>
1416 The pointer level of field @target has been decreased from @old_value to @new_value.
1417 </change>
1418 <effect>
1419 The library functions will treat the value of this field as the lower-dimension array and will not read all elements. This may change the behavior of applications.
1420 </effect>
1421</rule>
1422
1423<rule>
1424 <id>
1425 Field_Size
1426 </id>
1427 <severity>
1428 Medium
1429 </severity>
1430 <kind>
1431 Fields
1432 </kind>
1433 <change>
1434 Size of field @target has been changed from @old_size to @new_size.
1435 </change>
1436 <effect>
1437 Previous accesses of applications and library functions to this field may be broken.
1438 </effect>
1439</rule>
1440
1441<rule>
1442 <id>
Andrey Ponomarenko46bef512013-06-14 16:33:03 +04001443 Struct_Field_Size_Increased
1444 </id>
1445 <severity>
1446 Low
1447 </severity>
1448 <kind>
1449 Fields
1450 </kind>
1451 <change>
1452 Size of field @target has been changed from @old_size to @new_size.
1453 </change>
1454 <effect>
1455 Previous accesses of applications and library functions to this field may be broken.
1456 </effect>
1457</rule>
1458
1459<rule>
1460 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001461 Field_Size_And_Layout
1462 </id>
1463 <severity>
1464 Medium
1465 </severity>
1466 <kind>
1467 Fields
1468 </kind>
1469 <change>
1470 Size of field @target has been changed from @old_size to @new_size.
1471 </change>
1472 <effect>
1473 Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1474 </effect>
1475</rule>
1476
1477<rule>
1478 <id>
1479 Field_Size_And_Type_Size
1480 </id>
1481 <severity>
1482 Medium
1483 </severity>
1484 <kind>
1485 Fields
1486 </kind>
1487 <change>
1488 Size of field @target has been changed from @old_size to @new_size.
1489 </change>
1490 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001491 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001492 2) Previous accesses of applications and library functions to this field may be broken.
1493 </effect>
1494</rule>
1495
1496<rule>
1497 <id>
1498 Field_Size_And_Layout_And_Type_Size
1499 </id>
1500 <severity>
1501 Medium
1502 </severity>
1503 <kind>
1504 Fields
1505 </kind>
1506 <change>
1507 Size of field @target has been changed from @old_size to @new_size.
1508 </change>
1509 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001510 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001511 2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1512 </effect>
1513</rule>
1514
1515<rule>
1516 <id>
1517 Private_Field_Size_And_Layout
1518 </id>
1519 <severity>
1520 Medium
1521 </severity>
1522 <kind>
1523 Fields
1524 </kind>
1525 <change>
1526 Size of field @target has been changed from @old_size to @new_size.
1527 </change>
1528 <effect>
1529 Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1530 </effect>
1531</rule>
1532
1533<rule>
1534 <id>
Andrey Ponomarenkod2ed4c62014-03-05 17:34:32 +04001535 Private_Field_Size
1536 </id>
1537 <severity>
1538 Safe
1539 </severity>
1540 <kind>
1541 Fields
1542 </kind>
1543 <change>
1544 Size of field @target has been changed from @old_size to @new_size.
1545 </change>
1546 <effect>
1547 No effect.
1548 </effect>
1549</rule>
1550
1551<rule>
1552 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001553 Private_Field_Size_And_Type_Size
1554 </id>
1555 <severity>
1556 Low
1557 </severity>
1558 <kind>
1559 Fields
1560 </kind>
1561 <change>
1562 Size of field @target has been changed from @old_size to @new_size.
1563 </change>
1564 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001565 Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001566 </effect>
1567</rule>
1568
1569<rule>
1570 <id>
1571 Private_Field_Size_And_Layout_And_Type_Size
1572 </id>
1573 <severity>
1574 Medium
1575 </severity>
1576 <kind>
1577 Fields
1578 </kind>
1579 <change>
1580 Size of field @target has been changed from @old_size to @new_size.
1581 </change>
1582 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001583 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001584 2) Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1585 </effect>
1586</rule>
1587
1588<rule>
1589 <id>
1590 Typedef_BaseType
1591 </id>
1592 <severity>
1593 Low
1594 </severity>
1595 <kind>
1596 Types
1597 </kind>
1598 <change>
1599 Base type has been changed from @old_value to @new_value.
1600 </change>
1601 <effect>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04001602 Replacement of the base data type may indicate a change in its semantic meaning.
1603 </effect>
1604</rule>
1605
1606<rule>
1607 <id>
1608 Typedef_BaseType_Format
1609 </id>
1610 <severity>
1611 Medium
1612 </severity>
1613 <kind>
1614 Types
1615 </kind>
1616 <change>
1617 Base type has been changed from @old_value to @new_value of different format.
1618 </change>
1619 <effect>
1620 The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001621 </effect>
1622</rule>
1623
1624<rule>
1625 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04001626 Added_Symbol
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001627 </id>
1628 <severity>
1629 Safe
1630 </severity>
1631 <kind>
1632 Symbols
1633 </kind>
1634</rule>
1635
1636<rule>
1637 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04001638 Removed_Symbol
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001639 </id>
1640 <severity>
1641 High
1642 </severity>
1643 <kind>
1644 Symbols
1645 </kind>
1646</rule>
1647
1648<rule>
1649 <id>
1650 Method_Became_Static
1651 </id>
1652 <severity>
1653 High
1654 </severity>
1655 <kind>
1656 Symbols
1657 </kind>
1658 <change>
1659 Method became static.
1660 </change>
1661 <effect>
1662 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1663 </effect>
1664</rule>
1665
1666<rule>
1667 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001668 Method_Became_Non_Static
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001669 </id>
1670 <severity>
1671 High
1672 </severity>
1673 <kind>
1674 Symbols
1675 </kind>
1676 <change>
1677 Method became non-static.
1678 </change>
1679 <effect>
1680 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1681 </effect>
1682</rule>
1683
1684<rule>
1685 <id>
1686 Parameter_Default_Value_Changed
1687 </id>
1688 <severity>
1689 Low
1690 </severity>
1691 <kind>
1692 Parameters
1693 </kind>
1694 <change>
1695 The default argument of @param_pos parameter @target has been changed from @old_value to @new_value.
1696 </change>
1697 <effect>
1698 Applications will pass an old default (compile-time) argument that may not be properly handled anymore. This may result in crash or incorrect behavior of applications.
1699 </effect>
1700</rule>
1701
1702<rule>
1703 <id>
1704 Parameter_Default_Value_Removed
1705 </id>
1706 <severity>
1707 Low
1708 </severity>
1709 <kind>
1710 Parameters
1711 </kind>
1712 <change>
1713 The default argument @old_value of @param_pos parameter @target has been removed.
1714 </change>
1715 <effect>
1716 Applications will pass an old default argument (that is not default any more) that may not be properly handled anymore. This may result in crash or incorrect behavior of applications.
1717 </effect>
1718</rule>
1719
1720<rule>
1721 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001722 Parameter_Default_Value_Added
1723 </id>
1724 <severity>
1725 Safe
1726 </severity>
1727 <kind>
1728 Parameters
1729 </kind>
1730 <change>
1731 The default argument @new_value of @param_pos parameter @target has been added.
1732 </change>
1733 <effect>
1734 No effect.
1735 </effect>
1736</rule>
1737
1738<rule>
1739 <id>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001740 Parameter_Type_And_Register
1741 </id>
1742 <severity>
1743 Medium
1744 </severity>
1745 <kind>
1746 Symbols
1747 </kind>
1748 <change>
1749 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1750 </change>
1751 <effect>
1752 The parameter became passed in different register. Applications will read the wrong memory block instead of the parameter value. Also, distribution of other parameters on the available registers and stack may be changed.
1753 </effect>
1754</rule>
1755
1756<rule>
1757 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001758 Parameter_Type_And_Stack
1759 </id>
1760 <severity>
1761 High
1762 </severity>
1763 <kind>
1764 Parameters
1765 </kind>
1766 <change>
1767 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1768 </change>
1769 <effect>
1770 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1771 </effect>
1772</rule>
1773
1774<rule>
1775 <id>
1776 Parameter_Type_And_Size
1777 </id>
1778 <severity>
1779 High
1780 </severity>
1781 <kind>
1782 Parameters
1783 </kind>
1784 <change>
1785 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1786 </change>
1787 <effect>
1788 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1789 </effect>
1790</rule>
1791
1792<rule>
1793 <id>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001794 Parameter_Type_From_Stack_To_Register
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001795 </id>
1796 <severity>
1797 High
1798 </severity>
1799 <kind>
1800 Parameters
1801 </kind>
1802 <change>
1803 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1804 </change>
1805 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001806 The parameter became passed in the register instead of the stack. This may result in crash or incorrect behavior of applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001807 </effect>
1808</rule>
1809
1810<rule>
1811 <id>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001812 Parameter_Type_From_Register_To_Stack
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001813 </id>
1814 <severity>
1815 High
1816 </severity>
1817 <kind>
1818 Parameters
1819 </kind>
1820 <change>
1821 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1822 </change>
1823 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001824 The parameter became passed through the stack instead of the register. This may result in crash or incorrect behavior of applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001825 </effect>
1826</rule>
1827
1828<rule>
1829 <id>
1830 Parameter_Type
1831 </id>
1832 <severity>
1833 Low
1834 </severity>
1835 <kind>
1836 Parameters
1837 </kind>
1838 <change>
1839 Type of @param_pos parameter @target has been changed from @old_value to @new_value.
1840 </change>
1841 <effect>
1842 Replacement of parameter data type may indicate a change in its semantic meaning.
1843 </effect>
1844</rule>
1845
1846<rule>
1847 <id>
1848 Parameter_Became_Non_Const
1849 </id>
1850 <severity>
1851 Medium
1852 </severity>
1853 <kind>
1854 Parameters
1855 </kind>
1856 <change>
1857 Type of @param_pos parameter @target has been changed from @old_value to @new_value (became non-const).
1858 </change>
1859 <effect>
1860 This function may change parameter @target, but it will be treated as const by old client applications. This may result in crash or incorrect behavior of applications.
1861 </effect>
1862</rule>
1863
1864<rule>
1865 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001866 Parameter_Removed_Const
1867 </id>
1868 <severity>
1869 Medium
1870 </severity>
1871 <kind>
1872 Parameters
1873 </kind>
1874 <change>
1875 Type of @param_pos parameter @target has been changed from @old_value to @new_value (removed const qualifier).
1876 </change>
1877 <effect>
1878 This function may change parameter @target, but it will be treated as const by old client applications. This may result in crash or incorrect behavior of applications.
1879 </effect>
1880</rule>
1881
1882<rule>
1883 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001884 Parameter_Became_Restrict
1885 </id>
1886 <severity>
1887 Medium
1888 </severity>
1889 <kind>
1890 Parameters
1891 </kind>
1892 <change>
1893 Parameter @target became restrict.
1894 </change>
1895 <effect>
1896 Added a new restriction on the parameter: if the memory addressed by the restrict-qualified pointer is modified, no other pointer will access that same memory. The compiler may choose to optimize new library code involving restrict-qualified pointers in a way that might result in incorrect behavior of old applications, that don't meet this restriction.
1897 </effect>
1898</rule>
1899
1900<rule>
1901 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001902 Parameter_Became_Non_Restrict
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04001903 </id>
1904 <severity>
1905 Safe
1906 </severity>
1907 <kind>
1908 Parameters
1909 </kind>
1910 <change>
1911 Parameter @target became non-restrict.
1912 </change>
1913 <effect>
1914 No effect.
1915 </effect>
1916</rule>
1917
1918<rule>
1919 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001920 Parameter_Became_Register
1921 </id>
1922 <severity>
1923 Medium
1924 </severity>
1925 <kind>
1926 Parameters
1927 </kind>
1928 <change>
1929 Added register modifier to the parameter @target.
1930 </change>
1931 <effect>
1932 The parameter may be passed in a register instead of the calling stack.
1933 </effect>
1934</rule>
1935
1936<rule>
1937 <id>
1938 Parameter_Became_Non_Register
1939 </id>
1940 <severity>
1941 Medium
1942 </severity>
1943 <kind>
1944 Parameters
1945 </kind>
1946 <change>
1947 Removed register modifier from the parameter @target.
1948 </change>
1949 <effect>
1950 The parameter will be passed on the calling stack instead of a register.
1951 </effect>
1952</rule>
1953
1954<rule>
1955 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001956 Parameter_To_Register
1957 </id>
1958 <severity>
1959 Medium
1960 </severity>
1961 <kind>
1962 Parameters
1963 </kind>
1964 <change>
1965 The parameter @target became passed in @new_value register instead of stack.
1966 </change>
1967 <effect>
1968 Violation of the calling convention. This may result in crash or incorrect behavior of applications.
1969 </effect>
1970</rule>
1971
1972<rule>
1973 <id>
1974 Parameter_From_Register
1975 </id>
1976 <severity>
1977 Medium
1978 </severity>
1979 <kind>
1980 Parameters
1981 </kind>
1982 <change>
1983 The parameter @target became passed on stack instead of @old_value register.
1984 </change>
1985 <effect>
1986 Violation of the calling convention. This may result in crash or incorrect behavior of applications.
1987 </effect>
1988</rule>
1989
1990<rule>
1991 <id>
1992 Parameter_Changed_Register
1993 </id>
1994 <severity>
1995 High
1996 </severity>
1997 <kind>
1998 Symbols
1999 </kind>
2000 <change>
2001 The parameter @target became passed in @new_value register instead of @old_value.
2002 </change>
2003 <effect>
2004 Applications will read the wrong memory block instead of the parameter value.
2005 </effect>
2006</rule>
2007
2008<rule>
2009 <id>
2010 Parameter_Changed_Offset
2011 </id>
2012 <severity>
2013 High
2014 </severity>
2015 <kind>
2016 Symbols
2017 </kind>
2018 <change>
2019 The parameter @target became passed at the different offset on the stack (@new_value instead of @old_value).
2020 </change>
2021 <effect>
2022 Violation of the calling convention. This may result in crash or incorrect behavior of applications.
2023 </effect>
2024</rule>
2025
2026<rule>
2027 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002028 Return_Type_Became_Const
2029 </id>
2030 <severity>
2031 Medium
2032 </severity>
2033 <kind>
2034 Symbols
2035 </kind>
2036 <change>
2037 Type of return value became const (has been changed from @old_value to @new_value).
2038 </change>
2039 <effect>
2040 The return value will be treated as non-const by old client applications. This may result in crash or incorrect behavior of applications.
2041 </effect>
2042</rule>
2043
2044<rule>
2045 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002046 Return_Type_Added_Const
2047 </id>
2048 <severity>
2049 Medium
2050 </severity>
2051 <kind>
2052 Symbols
2053 </kind>
2054 <change>
2055 Added **const** qualifier to return value (has been changed from @old_value to @new_value).
2056 </change>
2057 <effect>
2058 The return value will be treated as non-const by old client applications. This may result in crash or incorrect behavior of applications.
2059 </effect>
2060</rule>
2061
2062<rule>
2063 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002064 Parameter_BaseType_And_Size
2065 </id>
2066 <severity>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04002067 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002068 </severity>
2069 <kind>
2070 Parameters
2071 </kind>
2072 <change>
2073 Base type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
2074 </change>
2075 <effect>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04002076 This parameter may be incorrectly initialized by applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002077 </effect>
2078</rule>
2079
2080<rule>
2081 <id>
2082 Parameter_BaseType
2083 </id>
2084 <severity>
2085 Low
2086 </severity>
2087 <kind>
2088 Parameters
2089 </kind>
2090 <change>
2091 Base type of @param_pos parameter @target has been changed from @old_value to @new_value.
2092 </change>
2093 <effect>
2094 Replacement of parameter base type may indicate a change in its semantic meaning.
2095 </effect>
2096</rule>
2097
2098<rule>
2099 <id>
2100 Parameter_PointerLevel_Increased
2101 </id>
2102 <severity>
2103 High
2104 </severity>
2105 <kind>
2106 Parameters
2107 </kind>
2108 <change>
2109 The pointer level of @param_pos parameter @target has been increased from @old_value to @new_value.
2110 </change>
2111 <effect>
2112 The library function may try to access unallocated memory by the dereferencing of old parameter value and therefore cause a crash of applications.
2113 </effect>
2114</rule>
2115
2116<rule>
2117 <id>
2118 Parameter_PointerLevel_Decreased
2119 </id>
2120 <severity>
2121 Medium
2122 </severity>
2123 <kind>
2124 Parameters
2125 </kind>
2126 <change>
2127 The pointer level of @param_pos parameter @target has been decreased from @old_value to @new_value.
2128 </change>
2129 <effect>
2130 The library function will treat the parameter as the lower-dimension array and will not read all elements. This may change the behavior of applications.
2131 NOTE: if this is out-parameter then this change may cause a crash of applications.
2132 </effect>
2133</rule>
2134
2135<rule>
2136 <id>
2137 Return_Type_And_Size
2138 </id>
2139 <severity>
2140 Medium
2141 </severity>
2142 <kind>
2143 Symbols
2144 </kind>
2145 <change>
2146 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2147 </change>
2148 <effect>
2149 Applications will obtain a different return value and execution may change.
2150 </effect>
2151</rule>
2152
2153<rule>
2154 <id>
2155 Global_Data_Type_And_Size
2156 </id>
2157 <severity>
2158 Medium
2159 </severity>
2160 <kind>
2161 Symbols
2162 </kind>
2163 <change>
2164 Type of this global data has been changed from @old_value (@old_size) to @new_value (@new_size).
2165 </change>
2166 <effect>
2167 Applications will obtain a different value and execution may change.
2168 </effect>
2169</rule>
2170
2171<rule>
2172 <id>
2173 Return_Type
2174 </id>
2175 <severity>
2176 Low
2177 </severity>
2178 <kind>
2179 Symbols
2180 </kind>
2181 <change>
2182 Type of return value has been changed from @old_value to @new_value.
2183 </change>
2184 <effect>
2185 Replacement of return type may indicate a change in its semantic meaning.
2186 </effect>
2187</rule>
2188
2189<rule>
2190 <id>
2191 Global_Data_Type
2192 </id>
2193 <severity>
2194 Low
2195 </severity>
2196 <kind>
2197 Symbols
2198 </kind>
2199 <change>
2200 Type of this global data has been changed from @old_value to @new_value.
2201 </change>
2202 <effect>
2203 Replacement of data type may indicate a change in semantic meaning.
2204 </effect>
2205</rule>
2206
2207<rule>
2208 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002209 Global_Data_Type_Format
2210 </id>
2211 <severity>
2212 Medium
2213 </severity>
2214 <kind>
2215 Symbols
2216 </kind>
2217 <change>
2218 Type of this global data has been changed from @old_value to @new_value of different format.
2219 </change>
2220 <effect>
2221 This global data may be incorrectly accessed by applications.
2222 </effect>
2223</rule>
2224
2225<rule>
2226 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002227 Global_Data_Size
2228 </id>
2229 <severity>
2230 Medium
2231 </severity>
2232 <kind>
2233 Symbols
2234 </kind>
2235 <change>
2236 Size of this global data has been changed from @old_size to @new_size.
2237 </change>
2238 <effect>
2239 Applications will obtain a different value and execution may change.
2240 </effect>
2241</rule>
2242
2243<rule>
2244 <id>
2245 Return_Type_Became_Void
2246 </id>
2247 <severity>
2248 Medium
2249 </severity>
2250 <kind>
2251 Symbols
2252 </kind>
2253 <change>
2254 Type of return value has been changed from @old_value (@old_size) to void.
2255 </change>
2256 <effect>
2257 Applications will not obtain a return value and execution may change.
2258 </effect>
2259</rule>
2260
2261<rule>
2262 <id>
2263 Return_Type_Became_Void_And_Stack_Layout
2264 </id>
2265 <severity>
2266 High
2267 </severity>
2268 <kind>
2269 Symbols
2270 </kind>
2271 <change>
2272 Type of return value has been changed from @old_value (@old_size) to void.
2273 </change>
2274 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002275 1) Applications will read the wrong memory block instead of the return value.
2276 2) Layout of parameter's stack has been shifted by @word_size bytes because the hidden first argument, that is used to pass the return value, has been removed. All the parameters will be incorrectly initialized by applications.
2277 </effect>
2278</rule>
2279
2280<rule>
2281 <id>
2282 Return_Type_Became_Void_And_Register
2283 </id>
2284 <severity>
2285 High
2286 </severity>
2287 <kind>
2288 Symbols
2289 </kind>
2290 <change>
2291 Type of return value has been changed from @old_value (@old_size) to void.
2292 </change>
2293 <effect>
2294 1) Applications will read the wrong memory block instead of the return value.
2295 2) Distribution of parameters on the available registers and stack has been changed because the hidden first argument, that is used to pass the return value, has been removed. All the parameters will be incorrectly initialized by applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002296 </effect>
2297</rule>
2298
2299<rule>
2300 <id>
2301 Return_Type_From_Void_And_Stack_Layout
2302 </id>
2303 <severity>
2304 High
2305 </severity>
2306 <kind>
2307 Symbols
2308 </kind>
2309 <change>
2310 Type of return value has been changed from void to @new_value (@new_size).
2311 </change>
2312 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002313 Layout of parameter's stack has been shifted by @word_size bytes because the return value became passed in memory as the hidden first argument, that was used to pass the return value. All the parameters will be incorrectly initialized by applications.
2314 </effect>
2315</rule>
2316
2317<rule>
2318 <id>
2319 Return_Type_From_Void_And_Register
2320 </id>
2321 <severity>
2322 High
2323 </severity>
2324 <kind>
2325 Symbols
2326 </kind>
2327 <change>
2328 Type of return value has been changed from void to @new_value (@new_size).
2329 </change>
2330 <effect>
2331 Distribution of parameters on the available registers and stack has been changed because the return value became passed in memory as the hidden first argument, that is used to pass the return value. All the parameters will be incorrectly initialized by applications.
2332 </effect>
2333</rule>
2334
2335<rule>
2336 <id>
2337 Return_Type_From_Void
2338 </id>
2339 <severity>
2340 Low
2341 </severity>
2342 <kind>
2343 Symbols
2344 </kind>
2345 <change>
2346 Type of return value has been changed from void to @new_value (@new_size).
2347 </change>
2348 <effect>
2349 Replacement of return type may indicate a change in its semantic meaning.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002350 </effect>
2351</rule>
2352
2353<rule>
2354 <id>
2355 Return_Type_From_Register_To_Stack
2356 </id>
2357 <severity>
2358 High
2359 </severity>
2360 <kind>
2361 Symbols
2362 </kind>
2363 <change>
2364 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2365 </change>
2366 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002367 1) The return value became passed in memory as the hidden first argument (address of the space on the stack provided by the caller) instead of the register and therefore the layout of parameter's stack has been shifted by @word_size bytes. All the parameters will be incorrectly initialized by applications.
2368 2) Applications will read the wrong memory block instead of the return value.
2369 </effect>
2370</rule>
2371
2372<rule>
2373 <id>
2374 Return_Type_And_Register_Became_Hidden_Parameter
2375 </id>
2376 <severity>
2377 High
2378 </severity>
2379 <kind>
2380 Symbols
2381 </kind>
2382 <change>
2383 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2384 </change>
2385 <effect>
2386 1) The return value became passed in different register as the hidden first argument (address of the space on the stack provided by the caller) and therefore distribution of parameters on the available registers and stack will be changed. All the parameters will be incorrectly initialized by applications.
2387 2) Applications will read the wrong memory block instead of the return value.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002388 </effect>
2389</rule>
2390
2391<rule>
2392 <id>
2393 Return_Type_From_Stack_To_Register
2394 </id>
2395 <severity>
2396 High
2397 </severity>
2398 <kind>
2399 Symbols
2400 </kind>
2401 <change>
2402 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2403 </change>
2404 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002405 1) The return value became passed in register instead of the hidden first argument (address of the space on the stack provided by the caller) and therefore the layout of parameter's stack has been shifted by @word_size bytes. All the parameters will be incorrectly initialized by applications.
2406 2) Applications will read the wrong memory block instead of the return value.
2407 </effect>
2408</rule>
2409
2410<rule>
2411 <id>
2412 Return_Type_And_Register_Was_Hidden_Parameter
2413 </id>
2414 <severity>
2415 High
2416 </severity>
2417 <kind>
2418 Symbols
2419 </kind>
2420 <change>
2421 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2422 </change>
2423 <effect>
2424 1) The return value became passed in register instead of the hidden first argument, that is passed in different register, and therefore distribution of parameters on the available registers and stack will be changed. All the parameters will be incorrectly initialized by applications.
2425 2) Applications will read the wrong memory block instead of the return value.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002426 </effect>
2427</rule>
2428
2429<rule>
2430 <id>
2431 Global_Data_Became_Non_Const
2432 </id>
2433 <severity>
2434 Medium
2435 </severity>
2436 <kind>
2437 Symbols
2438 </kind>
2439 <change>
2440 This global data became non-const.
2441 </change>
2442 <effect>
2443 This data will be copied to applications at compile time. Any attempts to change this global data by library functions may result in crash of applications.
2444 </effect>
2445</rule>
2446
2447<rule>
2448 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002449 Global_Data_Removed_Const
2450 </id>
2451 <severity>
2452 Low
2453 </severity>
2454 <kind>
2455 Symbols
2456 </kind>
2457 <change>
2458 Removed **const** qualifier from the type of this global data.
2459 </change>
2460 <effect>
2461 This data will be treated as const by old client applications. Any attempts to change this global data by library functions may result in undefined behavior.
2462 </effect>
2463</rule>
2464
2465<rule>
2466 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002467 Global_Data_Became_Const
2468 </id>
2469 <severity>
2470 Medium
2471 </severity>
2472 <kind>
2473 Symbols
2474 </kind>
2475 <change>
2476 This global data became const.
2477 </change>
2478 <effect>
2479 Any attempts of old applications to change this global data may result in crash.
2480 </effect>
2481</rule>
2482
2483<rule>
2484 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002485 Global_Data_Added_Const
2486 </id>
2487 <severity>
2488 Medium
2489 </severity>
2490 <kind>
2491 Symbols
2492 </kind>
2493 <change>
2494 Added **const** qualifier to the type of this global data.
2495 </change>
2496 <effect>
2497 Any attempts of old applications to change this global data may result in crash.
2498 </effect>
2499</rule>
2500
2501<rule>
2502 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002503 Return_BaseType_And_Size
2504 </id>
2505 <severity>
2506 Medium
2507 </severity>
2508 <kind>
2509 Symbols
2510 </kind>
2511 <change>
2512 Base type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2513 </change>
2514 <effect>
2515 Applications will obtain a different return value and execution may change.
2516 </effect>
2517</rule>
2518
2519<rule>
2520 <id>
2521 Return_BaseType
2522 </id>
2523 <severity>
2524 Low
2525 </severity>
2526 <kind>
2527 Symbols
2528 </kind>
2529 <change>
2530 Base type of return value has been changed from @old_value to @new_value.
2531 </change>
2532 <effect>
2533 Replacement of return base type may indicate a change in its semantic meaning.
2534 </effect>
2535</rule>
2536
2537<rule>
2538 <id>
2539 Return_PointerLevel_Increased
2540 </id>
2541 <severity>
2542 Low
2543 </severity>
2544 <kind>
2545 Symbols
2546 </kind>
2547 <change>
2548 The pointer level of return value has been increased from @old_value to @new_value.
2549 </change>
2550 <effect>
2551 Applications will treat the return value as the lower-dimension array and will not read all elements. This may change the behavior of applications.
2552 </effect>
2553</rule>
2554
2555<rule>
2556 <id>
2557 Return_PointerLevel_Decreased
2558 </id>
2559 <severity>
2560 Medium
2561 </severity>
2562 <kind>
2563 Symbols
2564 </kind>
2565 <change>
2566 The pointer level of return value has been decreased from @old_value to @new_value.
2567 </change>
2568 <effect>
2569 Applications may try to access unallocated memory by the dereferencing of new return value and therefore cause a crash.
2570 </effect>
2571</rule>
2572
2573<rule>
2574 <id>
2575 Removed_Parameter
2576 </id>
2577 <severity>
2578 Medium
2579 </severity>
2580 <kind>
2581 Parameters
2582 </kind>
2583 <change>
2584 @param_pos parameter @target has been removed from the calling stack.
2585 </change>
2586 <effect>
2587 This parameter will be ignored by the function.
2588 </effect>
2589</rule>
2590
2591<rule>
2592 <id>
2593 Removed_Unnamed_Parameter
2594 </id>
2595 <severity>
2596 Medium
2597 </severity>
2598 <kind>
2599 Parameters
2600 </kind>
2601 <change>
2602 Parameter @target of type @param_type has been removed from the calling stack.
2603 </change>
2604 <effect>
2605 This parameter will be ignored by the function.
2606 </effect>
2607</rule>
2608
2609<rule>
2610 <id>
2611 Added_Parameter
2612 </id>
2613 <severity>
2614 Medium
2615 </severity>
2616 <kind>
2617 Parameters
2618 </kind>
2619 <change>
2620 Parameter @target of type @param_type has been added to the calling stack.
2621 </change>
2622 <effect>
2623 This parameter will not be initialized by old clients.
2624 </effect>
2625</rule>
2626
2627<rule>
2628 <id>
2629 Added_Unnamed_Parameter
2630 </id>
2631 <severity>
2632 Medium
2633 </severity>
2634 <kind>
2635 Parameters
2636 </kind>
2637 <change>
2638 @param_pos parameter @target has been added to the calling stack.
2639 </change>
2640 <effect>
2641 This parameter will not be initialized by old clients.
2642 </effect>
2643</rule>
2644
2645<rule>
2646 <id>
2647 Removed_Middle_Parameter
2648 </id>
2649 <severity>
2650 High
2651 </severity>
2652 <kind>
2653 Parameters
2654 </kind>
2655 <change>
2656 @param_pos middle parameter @target has been removed from the calling stack.
2657 </change>
2658 <effect>
2659 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2660 </effect>
2661</rule>
2662
2663<rule>
2664 <id>
2665 Removed_Middle_Unnamed_Parameter
2666 </id>
2667 <severity>
2668 High
2669 </severity>
2670 <kind>
2671 Parameters
2672 </kind>
2673 <change>
2674 Middle parameter @target of type @param_type has been removed from the calling stack.
2675 </change>
2676 <effect>
2677 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2678 </effect>
2679</rule>
2680
2681<rule>
2682 <id>
2683 Added_Middle_Parameter
2684 </id>
2685 <severity>
2686 High
2687 </severity>
2688 <kind>
2689 Parameters
2690 </kind>
2691 <change>
2692 Parameter @target of type @param_type has been added to the calling stack at the middle position.
2693 </change>
2694 <effect>
2695 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2696 </effect>
2697</rule>
2698
2699<rule>
2700 <id>
2701 Added_Middle_Unnamed_Parameter
2702 </id>
2703 <severity>
2704 High
2705 </severity>
2706 <kind>
2707 Parameters
2708 </kind>
2709 <change>
2710 @param_pos parameter @target has been added to the calling stack at the middle position.
2711 </change>
2712 <effect>
2713 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2714 </effect>
2715</rule>
2716
2717<rule>
2718 <id>
2719 Renamed_Parameter
2720 </id>
2721 <severity>
2722 Low
2723 </severity>
2724 <kind>
2725 Parameters
2726 </kind>
2727 <change>
2728 @param_pos parameter @target has been renamed to @new_value.
2729 </change>
2730 <effect>
2731 Renaming of a parameter may indicate a change in its semantic meaning.
2732 </effect>
2733</rule>
2734
2735<rule>
2736 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002737 Symbol_Became_Static
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002738 </id>
2739 <severity>
2740 High
2741 </severity>
2742 <kind>
2743 Symbols
2744 </kind>
2745 <change>
2746 Method became static.
2747 </change>
2748 <effect>
2749 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2750 </effect>
2751</rule>
2752
2753<rule>
2754 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002755 Symbol_Became_Non_Static
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002756 </id>
2757 <severity>
2758 High
2759 </severity>
2760 <kind>
2761 Symbols
2762 </kind>
2763 <change>
2764 Method became non-static.
2765 </change>
2766 <effect>
2767 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2768 </effect>
2769</rule>
2770
2771<rule>
2772 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002773 Symbol_Became_Virtual
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002774 </id>
2775 <severity>
2776 High
2777 </severity>
2778 <kind>
2779 Symbols
2780 </kind>
2781 <change>
2782 Method became virtual.
2783 </change>
2784 <effect>
2785 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2786 </effect>
2787</rule>
2788
2789<rule>
2790 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002791 Symbol_Became_Non_Virtual
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002792 </id>
2793 <severity>
2794 High
2795 </severity>
2796 <kind>
2797 Symbols
2798 </kind>
2799 <change>
2800 Method became non-virtual.
2801 </change>
2802 <effect>
2803 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2804 </effect>
2805</rule>
2806
2807<rule>
2808 <id>
2809 Symbol_Changed_Return
2810 </id>
2811 <severity>
2812 High
2813 </severity>
2814 <kind>
2815 Symbols
2816 </kind>
2817 <change>
2818 Type of return value has been changed from @old_type to @new_type.
2819 </change>
2820 <effect>
2821 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2822 </effect>
2823</rule>
2824
2825<rule>
2826 <id>
2827 Global_Data_Symbol_Changed_Type
2828 </id>
2829 <severity>
2830 High
2831 </severity>
2832 <kind>
2833 Symbols
2834 </kind>
2835 <change>
2836 Type of this global data has been changed from @old_type to @new_type.
2837 </change>
2838 <effect>
2839 The name of the appropriate symbol for this data on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2840 </effect>
2841</rule>
2842
2843<rule>
2844 <id>
2845 Symbol_Changed_Parameters
2846 </id>
2847 <severity>
2848 High
2849 </severity>
2850 <kind>
2851 Symbols
2852 </kind>
2853 <change>
2854 Parameters list has been changed.
2855 </change>
2856 <effect>
2857 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2858 </effect>
2859</rule>
2860
2861<rule>
2862 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002863 Method_Became_Non_Const
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002864 </id>
2865 <severity>
2866 High
2867 </severity>
2868 <kind>
2869 Symbols
2870 </kind>
2871 <change>
2872 Method became non-const.
2873 </change>
2874 <effect>
2875 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2876 </effect>
2877</rule>
2878
2879<rule>
2880 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04002881 Method_Became_Const
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002882 </id>
2883 <severity>
2884 High
2885 </severity>
2886 <kind>
2887 Symbols
2888 </kind>
2889 <change>
2890 Method became const.
2891 </change>
2892 <effect>
2893 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2894 </effect>
2895</rule>
2896
2897<rule>
2898 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04002899 Method_Became_Volatile
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002900 </id>
2901 <severity>
2902 High
2903 </severity>
2904 <kind>
2905 Symbols
2906 </kind>
2907 <change>
2908 Method became volatile.
2909 </change>
2910 <effect>
2911 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2912 </effect>
2913</rule>
2914
2915<rule>
2916 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002917 Method_Became_Non_Volatile
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002918 </id>
2919 <severity>
2920 High
2921 </severity>
2922 <kind>
2923 Symbols
2924 </kind>
2925 <change>
2926 Method became non-volatile.
2927 </change>
2928 <effect>
2929 The name of the appropriate symbol for this function on binary level has been changed from @old_value to @new_value. This may cause "undefined reference" linker error in old client applications.
2930 </effect>
2931</rule>
2932
2933<rule>
2934 <id>
2935 Changed_Constant
2936 </id>
2937 <severity>
2938 Low
2939 </severity>
2940 <kind>
2941 Constants
2942 </kind>
2943 <change>
2944 The value of constant @target has been changed from @old_value to @new_value.
2945 </change>
2946 <effect>
2947 Applications will pass an old value of this constant as the parameter to the new-version library functions, that expect a new one. This may result in crash of incorrect behavior of applications.
2948 </effect>
2949</rule>
2950
2951<rule>
2952 <id>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04002953 Added_Constant
2954 </id>
2955 <severity>
2956 Safe
2957 </severity>
2958 <kind>
2959 Constants
2960 </kind>
2961 <change>
2962 The constant @target with value @new_value has been added.
2963 </change>
2964 <effect>
2965 No effect.
2966 </effect>
2967</rule>
2968
2969<rule>
2970 <id>
2971 Removed_Constant
2972 </id>
2973 <severity>
2974 Low
2975 </severity>
2976 <kind>
2977 Constants
2978 </kind>
2979 <change>
2980 The constant @target with value @old_value has been removed.
2981 </change>
2982 <effect>
2983 The value of this constant may no longer be properly handled by new-version library functions.
2984 </effect>
2985</rule>
2986
2987<rule>
2988 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002989 Field_Became_Volatile
2990 </id>
2991 <severity>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04002992 Low
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002993 </severity>
2994 <kind>
2995 Fields
2996 </kind>
2997 <change>
2998 Field @target became volatile.
2999 </change>
3000 <effect>
3001 The value of this field can begin to change in ways outside the control of old client applications.
3002 </effect>
3003</rule>
3004
3005<rule>
3006 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003007 Field_Became_Non_Volatile
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04003008 </id>
3009 <severity>
3010 Safe
3011 </severity>
3012 <kind>
3013 Fields
3014 </kind>
3015 <change>
3016 Field @target became non-volatile.
3017 </change>
3018 <effect>
3019 No effect.
3020 </effect>
3021</rule>
3022
3023<rule>
3024 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003025 Return_Value_Became_Volatile
3026 </id>
3027 <severity>
3028 Low
3029 </severity>
3030 <kind>
3031 Symbols
3032 </kind>
3033 <change>
3034 Return value became volatile.
3035 </change>
3036 <effect>
3037 Old client applications will get volatile object instead of non-volatile, but may be optimized by the compiler and cannot handle volatile objects.
3038 </effect>
3039</rule>
3040
3041<rule>
3042 <id>
3043 Parameter_Became_Non_Volatile
3044 </id>
3045 <severity>
3046 Low
3047 </severity>
3048 <kind>
3049 Symbols
3050 </kind>
3051 <change>
3052 Parameter @target became non-volatile.
3053 </change>
3054 <effect>
3055 Old client applications will pass volatile object to the function that may be optimized by the compiler and cannot handle volatile objects.
3056 </effect>
3057</rule>
3058
3059<rule>
3060 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003061 Field_Type_Format
3062 </id>
3063 <severity>
3064 Medium
3065 </severity>
3066 <kind>
3067 Fields
3068 </kind>
3069 <change>
3070 Type of field @target has been changed from @old_value to @new_value of different format.
3071 </change>
3072 <effect>
3073 This field may be incorrectly initialized or accessed by applications.
3074 </effect>
3075</rule>
3076
3077<rule>
3078 <id>
3079 Field_BaseType_Format
3080 </id>
3081 <severity>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +04003082 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003083 </severity>
3084 <kind>
3085 Fields
3086 </kind>
3087 <change>
3088 Base type of field @target has been changed from @old_value to @new_value of different format.
3089 </change>
3090 <effect>
3091 This field may be incorrectly initialized or accessed by applications.
3092 </effect>
3093</rule>
3094
3095<rule>
3096 <id>
3097 Parameter_Type_Format
3098 </id>
3099 <severity>
3100 Medium
3101 </severity>
3102 <kind>
3103 Parameters
3104 </kind>
3105 <change>
3106 Type of parameter @target has been changed from @old_value to @new_value of different format.
3107 </change>
3108 <effect>
3109 This parameter may be incorrectly initialized by applications.
3110 </effect>
3111</rule>
3112
3113<rule>
3114 <id>
3115 Parameter_BaseType_Format
3116 </id>
3117 <severity>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +04003118 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003119 </severity>
3120 <kind>
3121 Parameters
3122 </kind>
3123 <change>
3124 Base type of parameter @target has been changed from @old_value to @new_value of different format.
3125 </change>
3126 <effect>
3127 This parameter may be incorrectly initialized by applications.
3128 </effect>
3129</rule>
3130
3131<rule>
3132 <id>
3133 Return_Type_Format
3134 </id>
3135 <severity>
3136 Medium
3137 </severity>
3138 <kind>
3139 Symbols
3140 </kind>
3141 <change>
3142 Type of return value has been changed from @old_value to @new_value of different format.
3143 </change>
3144 <effect>
3145 Applications will obtain a different return value and execution may change.
3146 </effect>
3147</rule>
3148
3149<rule>
3150 <id>
3151 Return_Type_And_Register
3152 </id>
3153 <severity>
3154 Medium
3155 </severity>
3156 <kind>
3157 Symbols
3158 </kind>
3159 <change>
3160 Type of return value has been changed from @old_value to @new_value.
3161 </change>
3162 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04003163 The return value became passed in different register. Applications will read the wrong memory block instead of the return value. Also, distribution of parameters on the available registers and stack may be changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003164 </effect>
3165</rule>
3166
3167<rule>
3168 <id>
3169 Return_BaseType_Format
3170 </id>
3171 <severity>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +04003172 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003173 </severity>
3174 <kind>
3175 Symbols
3176 </kind>
3177 <change>
3178 Base type of return value has been changed from @old_value to @new_value of different format.
3179 </change>
3180 <effect>
3181 This parameter may be incorrectly initialized by applications.
3182 </effect>
3183</rule>
3184
3185<rule>
3186 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003187 Parameter_Became_Non_VaList
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003188 </id>
3189 <severity>
3190 Low
3191 </severity>
3192 <kind>
3193 Parameters
3194 </kind>
3195 <change>
3196 Type of @param_pos parameter has been changed from ... (va_list) to @new_value.
3197 </change>
3198 <effect>
3199 This parameter may not be initialized by old clients.
3200 </effect>
3201</rule>
3202
3203<rule>
3204 <id>
3205 Parameter_Became_VaList
3206 </id>
3207 <severity>
3208 Low
3209 </severity>
3210 <kind>
3211 Parameters
3212 </kind>
3213 <change>
3214 Type of @param_pos parameter @target has been changed from @old_value to ... (va_list).
3215 </change>
3216 <effect>
3217 The semantic meaning of the parameter may change.
3218 </effect>
3219</rule>
3220
3221<rule>
3222 <id>
3223 Added_Enum_Member
3224 </id>
3225 <severity>
3226 Safe
3227 </severity>
3228 <kind>
3229 Constants
3230 </kind>
3231 <change>
3232 The member @target with value @new_value has been added.
3233 </change>
3234 <effect>
3235 No effect.
3236 </effect>
3237</rule>
3238
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003239<rule>
3240 <id>
3241 Global_Data_Value_Changed
3242 </id>
3243 <severity>
3244 Low
3245 </severity>
3246 <kind>
3247 Symbols
3248 </kind>
3249 <change>
3250 The initial value of this global data has been changed from @old_value to @new_value.
3251 </change>
3252 <effect>
3253 Applications will use an old value of this data instead of the new one. This may cause incorrect behavior of applications.
3254 </effect>
3255</rule>
3256
3257<rule>
3258 <id>
3259 Field_Became_Mutable
3260 </id>
3261 <severity>
3262 Low
3263 </severity>
3264 <kind>
3265 Fields
3266 </kind>
3267 <change>
3268 Field @target became **mutable**.
3269 </change>
3270 <effect>
3271 The value of this field can begin to change in ways outside the control of old client applications.
3272 </effect>
3273</rule>
3274
3275<rule>
3276 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003277 Field_Became_Non_Mutable
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003278 </id>
3279 <severity>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003280 Low
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003281 </severity>
3282 <kind>
3283 Fields
3284 </kind>
3285 <change>
3286 Field @target became **non-mutable**.
3287 </change>
3288 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003289 The value of this field can still be changed by const methods of old client applications, but it's not expected by new-version library.
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003290 </effect>
3291</rule>
3292
3293<rule>
3294 <id>
3295 Method_Became_Private
3296 </id>
3297 <severity>
3298 Low
3299 </severity>
3300 <kind>
3301 Symbols
3302 </kind>
3303 <change>
3304 This method became **private**.
3305 </change>
3306 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003307 Old applications will continue using this method, but it may require a different initialization of the environment and parameters.
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003308 </effect>
3309</rule>
3310
3311<rule>
3312 <id>
3313 Method_Became_Protected
3314 </id>
3315 <severity>
3316 Low
3317 </severity>
3318 <kind>
3319 Symbols
3320 </kind>
3321 <change>
3322 This method became **protected**.
3323 </change>
3324 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003325 Old applications will continue using this method, but it may require a different initialization of the environment and parameters.
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003326 </effect>
3327</rule>
3328
3329<rule>
3330 <id>
3331 Method_Became_Public
3332 </id>
3333 <severity>
3334 Safe
3335 </severity>
3336 <kind>
3337 Symbols
3338 </kind>
3339 <change>
3340 This method became **public**.
3341 </change>
3342 <effect>
3343 No effect.
3344 </effect>
3345</rule>
3346
3347<rule>
3348 <id>
3349 Global_Data_Became_Private
3350 </id>
3351 <severity>
3352 Low
3353 </severity>
3354 <kind>
3355 Symbols
3356 </kind>
3357 <change>
3358 This global data became **private**.
3359 </change>
3360 <effect>
3361 Old applications will continue using this global data, but it may require a different initialization of the environment.
3362 </effect>
3363</rule>
3364
3365<rule>
3366 <id>
3367 Global_Data_Became_Protected
3368 </id>
3369 <severity>
3370 Low
3371 </severity>
3372 <kind>
3373 Symbols
3374 </kind>
3375 <change>
3376 This global data became **protected**.
3377 </change>
3378 <effect>
3379 Old applications will continue using this global data, but it may require a different initialization of the environment.
3380 </effect>
3381</rule>
3382
3383<rule>
3384 <id>
3385 Global_Data_Became_Public
3386 </id>
3387 <severity>
3388 Safe
3389 </severity>
3390 <kind>
3391 Symbols
3392 </kind>
3393 <change>
3394 This global data became **public**.
3395 </change>
3396 <effect>
3397 No effect.
3398 </effect>
3399</rule>
3400
3401<rule>
3402 <id>
3403 Field_Became_Const
3404 </id>
3405 <severity>
3406 Low
3407 </severity>
3408 <kind>
3409 Types
3410 </kind>
3411 <change>
3412 Field @target became **const**.
3413 </change>
3414 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04003415 The value of this field is expected to be **const** in new library version, but can be modified by old applications.
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003416 </effect>
3417</rule>
3418
3419<rule>
3420 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003421 Field_Became_Non_Const
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003422 </id>
3423 <severity>
3424 Safe
3425 </severity>
3426 <kind>
3427 Types
3428 </kind>
3429 <change>
3430 Field @target became **non-const**.
3431 </change>
3432 <effect>
3433 No effect.
3434 </effect>
3435</rule>
3436
3437<rule>
3438 <id>
3439 Field_Added_Const
3440 </id>
3441 <severity>
3442 Low
3443 </severity>
3444 <kind>
3445 Types
3446 </kind>
3447 <change>
3448 Added **const** qualifier to field @target.
3449 </change>
3450 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04003451 The value of this field is expected to be **const** in new library version, but can be modified by old applications.
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003452 </effect>
3453</rule>
3454
3455<rule>
3456 <id>
3457 Field_Removed_Const
3458 </id>
3459 <severity>
3460 Safe
3461 </severity>
3462 <kind>
3463 Types
3464 </kind>
3465 <change>
3466 Removed **const** qualifier from field @target.
3467 </change>
3468 <effect>
3469 No effect.
3470 </effect>
3471</rule>
3472
3473<rule>
3474 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003475 Field_Became_Private
3476 </id>
3477 <severity>
3478 Low
3479 </severity>
3480 <kind>
3481 Types
3482 </kind>
3483 <change>
3484 Field @target became **private**.
3485 </change>
3486 <effect>
3487 Old applications will continue using this field, but it may require a different initialization of class object.
3488 </effect>
3489</rule>
3490
3491<rule>
3492 <id>
3493 Field_Became_Protected
3494 </id>
3495 <severity>
3496 Low
3497 </severity>
3498 <kind>
3499 Types
3500 </kind>
3501 <change>
3502 Field @target became **protected**.
3503 </change>
3504 <effect>
3505 Old applications will continue using this field, but it may require a different initialization of class object.
3506 </effect>
3507</rule>
3508
3509<rule>
3510 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003511 Virtual_Method_Became_Pure
3512 </id>
3513 <severity>
3514 Medium
3515 </severity>
3516 <kind>
3517 Types
3518 </kind>
3519 <change>
3520 Virtual method @target became **pure**.
3521 </change>
3522 <effect>
3523 Old applications will not provide implementation for this pure virtual method. This may result in crash or incorrect behavior of applications.
3524 </effect>
3525</rule>
3526
3527<rule>
3528 <id>
3529 Virtual_Method_Became_Non_Pure
3530 </id>
3531 <severity>
3532 Safe
3533 </severity>
3534 <kind>
3535 Types
3536 </kind>
3537 <change>
3538 Virtual method @target became **non-pure**.
3539 </change>
3540 <effect>
3541 No effect.
3542 </effect>
3543</rule>
3544
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003545<rule>
3546 <id>
3547 Type_Became_Opaque
3548 </id>
3549 <severity>
3550 Medium
3551 </severity>
3552 <kind>
3553 Types
3554 </kind>
3555 <change>
3556 This type became **opaque**.
3557 </change>
3558 <effect>
3559 The internal structure of this type is hidden in the new library version and may be different. This may result in crash or incorrect behavior of applications.
3560 </effect>
3561</rule>
3562
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003563</rules>