blob: e9daea3ef9bd5e4b71f80a3ea90bbbfab742bad6 [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>
1298 Private_Field_Type_And_Size_And_Type_Size
1299 </id>
1300 <severity>
1301 Low
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>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001310 Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001311 </effect>
1312</rule>
1313
1314<rule>
1315 <id>
1316 Private_Field_Type_And_Size_And_Layout_And_Type_Size
1317 </id>
1318 <severity>
1319 Medium
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 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001329 2) Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1330 </effect>
1331</rule>
1332
1333<rule>
1334 <id>
1335 Field_BaseType_And_Size
1336 </id>
1337 <severity>
1338 Low
1339 </severity>
1340 <kind>
1341 Fields
1342 </kind>
1343 <change>
1344 Base type of field @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1345 </change>
1346 <effect>
1347 Possible access of applications to incorrect memory through the pointer.
1348 </effect>
1349</rule>
1350
1351<rule>
1352 <id>
1353 Field_BaseType
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 to @new_value.
1363 </change>
1364 <effect>
1365 Replacement of field base type may indicate a change in the semantic meaning of the field.
1366 </effect>
1367</rule>
1368
1369<rule>
1370 <id>
1371 Field_PointerLevel_Increased
1372 </id>
1373 <severity>
1374 Medium
1375 </severity>
1376 <kind>
1377 Fields
1378 </kind>
1379 <change>
1380 The pointer level of field @target has been increased from @old_value to @new_value.
1381 </change>
1382 <effect>
1383 The library functions may try to access unallocated memory by the dereferencing of old field value and therefore cause a crash of applications.
1384 </effect>
1385</rule>
1386
1387<rule>
1388 <id>
1389 Field_PointerLevel_Decreased
1390 </id>
1391 <severity>
1392 Low
1393 </severity>
1394 <kind>
1395 Fields
1396 </kind>
1397 <change>
1398 The pointer level of field @target has been decreased from @old_value to @new_value.
1399 </change>
1400 <effect>
1401 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.
1402 </effect>
1403</rule>
1404
1405<rule>
1406 <id>
1407 Field_Size
1408 </id>
1409 <severity>
1410 Medium
1411 </severity>
1412 <kind>
1413 Fields
1414 </kind>
1415 <change>
1416 Size of field @target has been changed from @old_size to @new_size.
1417 </change>
1418 <effect>
1419 Previous accesses of applications and library functions to this field may be broken.
1420 </effect>
1421</rule>
1422
1423<rule>
1424 <id>
1425 Field_Size_And_Layout
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 and fields at higher positions of the structure definition may be broken.
1438 </effect>
1439</rule>
1440
1441<rule>
1442 <id>
1443 Field_Size_And_Type_Size
1444 </id>
1445 <severity>
1446 Medium
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>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001455 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001456 2) Previous accesses of applications and library functions to this field may be broken.
1457 </effect>
1458</rule>
1459
1460<rule>
1461 <id>
1462 Field_Size_And_Layout_And_Type_Size
1463 </id>
1464 <severity>
1465 Medium
1466 </severity>
1467 <kind>
1468 Fields
1469 </kind>
1470 <change>
1471 Size of field @target has been changed from @old_size to @new_size.
1472 </change>
1473 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001474 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001475 2) Previous accesses of applications and library functions to this field and fields at higher positions of the structure definition may be broken.
1476 </effect>
1477</rule>
1478
1479<rule>
1480 <id>
1481 Private_Field_Size_And_Layout
1482 </id>
1483 <severity>
1484 Medium
1485 </severity>
1486 <kind>
1487 Fields
1488 </kind>
1489 <change>
1490 Size of field @target has been changed from @old_size to @new_size.
1491 </change>
1492 <effect>
1493 Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1494 </effect>
1495</rule>
1496
1497<rule>
1498 <id>
1499 Private_Field_Size_And_Type_Size
1500 </id>
1501 <severity>
1502 Low
1503 </severity>
1504 <kind>
1505 Fields
1506 </kind>
1507 <change>
1508 Size of field @target has been changed from @old_size to @new_size.
1509 </change>
1510 <effect>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001511 Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001512 </effect>
1513</rule>
1514
1515<rule>
1516 <id>
1517 Private_Field_Size_And_Layout_And_Type_Size
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>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001529 1) Size of the inclusive type has been changed.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001530 2) Previous accesses of applications and library functions to the fields at higher positions of the structure definition may be broken.
1531 </effect>
1532</rule>
1533
1534<rule>
1535 <id>
1536 Typedef_BaseType
1537 </id>
1538 <severity>
1539 Low
1540 </severity>
1541 <kind>
1542 Types
1543 </kind>
1544 <change>
1545 Base type has been changed from @old_value to @new_value.
1546 </change>
1547 <effect>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04001548 Replacement of the base data type may indicate a change in its semantic meaning.
1549 </effect>
1550</rule>
1551
1552<rule>
1553 <id>
1554 Typedef_BaseType_Format
1555 </id>
1556 <severity>
1557 Medium
1558 </severity>
1559 <kind>
1560 Types
1561 </kind>
1562 <change>
1563 Base type has been changed from @old_value to @new_value of different format.
1564 </change>
1565 <effect>
1566 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 +04001567 </effect>
1568</rule>
1569
1570<rule>
1571 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04001572 Added_Symbol
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001573 </id>
1574 <severity>
1575 Safe
1576 </severity>
1577 <kind>
1578 Symbols
1579 </kind>
1580</rule>
1581
1582<rule>
1583 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04001584 Removed_Symbol
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001585 </id>
1586 <severity>
1587 High
1588 </severity>
1589 <kind>
1590 Symbols
1591 </kind>
1592</rule>
1593
1594<rule>
1595 <id>
1596 Method_Became_Static
1597 </id>
1598 <severity>
1599 High
1600 </severity>
1601 <kind>
1602 Symbols
1603 </kind>
1604 <change>
1605 Method became static.
1606 </change>
1607 <effect>
1608 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1609 </effect>
1610</rule>
1611
1612<rule>
1613 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001614 Method_Became_Non_Static
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001615 </id>
1616 <severity>
1617 High
1618 </severity>
1619 <kind>
1620 Symbols
1621 </kind>
1622 <change>
1623 Method became non-static.
1624 </change>
1625 <effect>
1626 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1627 </effect>
1628</rule>
1629
1630<rule>
1631 <id>
1632 Parameter_Default_Value_Changed
1633 </id>
1634 <severity>
1635 Low
1636 </severity>
1637 <kind>
1638 Parameters
1639 </kind>
1640 <change>
1641 The default argument of @param_pos parameter @target has been changed from @old_value to @new_value.
1642 </change>
1643 <effect>
1644 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.
1645 </effect>
1646</rule>
1647
1648<rule>
1649 <id>
1650 Parameter_Default_Value_Removed
1651 </id>
1652 <severity>
1653 Low
1654 </severity>
1655 <kind>
1656 Parameters
1657 </kind>
1658 <change>
1659 The default argument @old_value of @param_pos parameter @target has been removed.
1660 </change>
1661 <effect>
1662 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.
1663 </effect>
1664</rule>
1665
1666<rule>
1667 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04001668 Parameter_Default_Value_Added
1669 </id>
1670 <severity>
1671 Safe
1672 </severity>
1673 <kind>
1674 Parameters
1675 </kind>
1676 <change>
1677 The default argument @new_value of @param_pos parameter @target has been added.
1678 </change>
1679 <effect>
1680 No effect.
1681 </effect>
1682</rule>
1683
1684<rule>
1685 <id>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001686 Parameter_Type_And_Register
1687 </id>
1688 <severity>
1689 Medium
1690 </severity>
1691 <kind>
1692 Symbols
1693 </kind>
1694 <change>
1695 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1696 </change>
1697 <effect>
1698 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.
1699 </effect>
1700</rule>
1701
1702<rule>
1703 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001704 Parameter_Type_And_Stack
1705 </id>
1706 <severity>
1707 High
1708 </severity>
1709 <kind>
1710 Parameters
1711 </kind>
1712 <change>
1713 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1714 </change>
1715 <effect>
1716 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1717 </effect>
1718</rule>
1719
1720<rule>
1721 <id>
1722 Parameter_Type_And_Size
1723 </id>
1724 <severity>
1725 High
1726 </severity>
1727 <kind>
1728 Parameters
1729 </kind>
1730 <change>
1731 Type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
1732 </change>
1733 <effect>
1734 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
1735 </effect>
1736</rule>
1737
1738<rule>
1739 <id>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001740 Parameter_Type_From_Stack_To_Register
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001741 </id>
1742 <severity>
1743 High
1744 </severity>
1745 <kind>
1746 Parameters
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>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001752 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 +04001753 </effect>
1754</rule>
1755
1756<rule>
1757 <id>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001758 Parameter_Type_From_Register_To_Stack
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001759 </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>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04001770 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 +04001771 </effect>
1772</rule>
1773
1774<rule>
1775 <id>
1776 Parameter_Type
1777 </id>
1778 <severity>
1779 Low
1780 </severity>
1781 <kind>
1782 Parameters
1783 </kind>
1784 <change>
1785 Type of @param_pos parameter @target has been changed from @old_value to @new_value.
1786 </change>
1787 <effect>
1788 Replacement of parameter data type may indicate a change in its semantic meaning.
1789 </effect>
1790</rule>
1791
1792<rule>
1793 <id>
1794 Parameter_Became_Non_Const
1795 </id>
1796 <severity>
1797 Medium
1798 </severity>
1799 <kind>
1800 Parameters
1801 </kind>
1802 <change>
1803 Type of @param_pos parameter @target has been changed from @old_value to @new_value (became non-const).
1804 </change>
1805 <effect>
1806 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.
1807 </effect>
1808</rule>
1809
1810<rule>
1811 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001812 Parameter_Removed_Const
1813 </id>
1814 <severity>
1815 Medium
1816 </severity>
1817 <kind>
1818 Parameters
1819 </kind>
1820 <change>
1821 Type of @param_pos parameter @target has been changed from @old_value to @new_value (removed const qualifier).
1822 </change>
1823 <effect>
1824 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.
1825 </effect>
1826</rule>
1827
1828<rule>
1829 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001830 Parameter_Became_Restrict
1831 </id>
1832 <severity>
1833 Medium
1834 </severity>
1835 <kind>
1836 Parameters
1837 </kind>
1838 <change>
1839 Parameter @target became restrict.
1840 </change>
1841 <effect>
1842 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.
1843 </effect>
1844</rule>
1845
1846<rule>
1847 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001848 Parameter_Became_Non_Restrict
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04001849 </id>
1850 <severity>
1851 Safe
1852 </severity>
1853 <kind>
1854 Parameters
1855 </kind>
1856 <change>
1857 Parameter @target became non-restrict.
1858 </change>
1859 <effect>
1860 No effect.
1861 </effect>
1862</rule>
1863
1864<rule>
1865 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001866 Parameter_Became_Register
1867 </id>
1868 <severity>
1869 Medium
1870 </severity>
1871 <kind>
1872 Parameters
1873 </kind>
1874 <change>
1875 Added register modifier to the parameter @target.
1876 </change>
1877 <effect>
1878 The parameter may be passed in a register instead of the calling stack.
1879 </effect>
1880</rule>
1881
1882<rule>
1883 <id>
1884 Parameter_Became_Non_Register
1885 </id>
1886 <severity>
1887 Medium
1888 </severity>
1889 <kind>
1890 Parameters
1891 </kind>
1892 <change>
1893 Removed register modifier from the parameter @target.
1894 </change>
1895 <effect>
1896 The parameter will be passed on the calling stack instead of a register.
1897 </effect>
1898</rule>
1899
1900<rule>
1901 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001902 Parameter_To_Register
1903 </id>
1904 <severity>
1905 Medium
1906 </severity>
1907 <kind>
1908 Parameters
1909 </kind>
1910 <change>
1911 The parameter @target became passed in @new_value register instead of stack.
1912 </change>
1913 <effect>
1914 Violation of the calling convention. This may result in crash or incorrect behavior of applications.
1915 </effect>
1916</rule>
1917
1918<rule>
1919 <id>
1920 Parameter_From_Register
1921 </id>
1922 <severity>
1923 Medium
1924 </severity>
1925 <kind>
1926 Parameters
1927 </kind>
1928 <change>
1929 The parameter @target became passed on stack instead of @old_value register.
1930 </change>
1931 <effect>
1932 Violation of the calling convention. This may result in crash or incorrect behavior of applications.
1933 </effect>
1934</rule>
1935
1936<rule>
1937 <id>
1938 Parameter_Changed_Register
1939 </id>
1940 <severity>
1941 High
1942 </severity>
1943 <kind>
1944 Symbols
1945 </kind>
1946 <change>
1947 The parameter @target became passed in @new_value register instead of @old_value.
1948 </change>
1949 <effect>
1950 Applications will read the wrong memory block instead of the parameter value.
1951 </effect>
1952</rule>
1953
1954<rule>
1955 <id>
1956 Parameter_Changed_Offset
1957 </id>
1958 <severity>
1959 High
1960 </severity>
1961 <kind>
1962 Symbols
1963 </kind>
1964 <change>
1965 The parameter @target became passed at the different offset on the stack (@new_value instead of @old_value).
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>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04001974 Return_Type_Became_Const
1975 </id>
1976 <severity>
1977 Medium
1978 </severity>
1979 <kind>
1980 Symbols
1981 </kind>
1982 <change>
1983 Type of return value became const (has been changed from @old_value to @new_value).
1984 </change>
1985 <effect>
1986 The return value will be treated as non-const by old client applications. This may result in crash or incorrect behavior of applications.
1987 </effect>
1988</rule>
1989
1990<rule>
1991 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04001992 Return_Type_Added_Const
1993 </id>
1994 <severity>
1995 Medium
1996 </severity>
1997 <kind>
1998 Symbols
1999 </kind>
2000 <change>
2001 Added **const** qualifier to return value (has been changed from @old_value to @new_value).
2002 </change>
2003 <effect>
2004 The return value will be treated as non-const by old client applications. This may result in crash or incorrect behavior of applications.
2005 </effect>
2006</rule>
2007
2008<rule>
2009 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002010 Parameter_BaseType_And_Size
2011 </id>
2012 <severity>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04002013 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002014 </severity>
2015 <kind>
2016 Parameters
2017 </kind>
2018 <change>
2019 Base type of @param_pos parameter @target has been changed from @old_value (@old_size) to @new_value (@new_size).
2020 </change>
2021 <effect>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04002022 This parameter may be incorrectly initialized by applications.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002023 </effect>
2024</rule>
2025
2026<rule>
2027 <id>
2028 Parameter_BaseType
2029 </id>
2030 <severity>
2031 Low
2032 </severity>
2033 <kind>
2034 Parameters
2035 </kind>
2036 <change>
2037 Base type of @param_pos parameter @target has been changed from @old_value to @new_value.
2038 </change>
2039 <effect>
2040 Replacement of parameter base type may indicate a change in its semantic meaning.
2041 </effect>
2042</rule>
2043
2044<rule>
2045 <id>
2046 Parameter_PointerLevel_Increased
2047 </id>
2048 <severity>
2049 High
2050 </severity>
2051 <kind>
2052 Parameters
2053 </kind>
2054 <change>
2055 The pointer level of @param_pos parameter @target has been increased from @old_value to @new_value.
2056 </change>
2057 <effect>
2058 The library function may try to access unallocated memory by the dereferencing of old parameter value and therefore cause a crash of applications.
2059 </effect>
2060</rule>
2061
2062<rule>
2063 <id>
2064 Parameter_PointerLevel_Decreased
2065 </id>
2066 <severity>
2067 Medium
2068 </severity>
2069 <kind>
2070 Parameters
2071 </kind>
2072 <change>
2073 The pointer level of @param_pos parameter @target has been decreased from @old_value to @new_value.
2074 </change>
2075 <effect>
2076 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.
2077 NOTE: if this is out-parameter then this change may cause a crash of applications.
2078 </effect>
2079</rule>
2080
2081<rule>
2082 <id>
2083 Return_Type_And_Size
2084 </id>
2085 <severity>
2086 Medium
2087 </severity>
2088 <kind>
2089 Symbols
2090 </kind>
2091 <change>
2092 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2093 </change>
2094 <effect>
2095 Applications will obtain a different return value and execution may change.
2096 </effect>
2097</rule>
2098
2099<rule>
2100 <id>
2101 Global_Data_Type_And_Size
2102 </id>
2103 <severity>
2104 Medium
2105 </severity>
2106 <kind>
2107 Symbols
2108 </kind>
2109 <change>
2110 Type of this global data has been changed from @old_value (@old_size) to @new_value (@new_size).
2111 </change>
2112 <effect>
2113 Applications will obtain a different value and execution may change.
2114 </effect>
2115</rule>
2116
2117<rule>
2118 <id>
2119 Return_Type
2120 </id>
2121 <severity>
2122 Low
2123 </severity>
2124 <kind>
2125 Symbols
2126 </kind>
2127 <change>
2128 Type of return value has been changed from @old_value to @new_value.
2129 </change>
2130 <effect>
2131 Replacement of return type may indicate a change in its semantic meaning.
2132 </effect>
2133</rule>
2134
2135<rule>
2136 <id>
2137 Global_Data_Type
2138 </id>
2139 <severity>
2140 Low
2141 </severity>
2142 <kind>
2143 Symbols
2144 </kind>
2145 <change>
2146 Type of this global data has been changed from @old_value to @new_value.
2147 </change>
2148 <effect>
2149 Replacement of data type may indicate a change in semantic meaning.
2150 </effect>
2151</rule>
2152
2153<rule>
2154 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002155 Global_Data_Type_Format
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 to @new_value of different format.
2165 </change>
2166 <effect>
2167 This global data may be incorrectly accessed by applications.
2168 </effect>
2169</rule>
2170
2171<rule>
2172 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002173 Global_Data_Size
2174 </id>
2175 <severity>
2176 Medium
2177 </severity>
2178 <kind>
2179 Symbols
2180 </kind>
2181 <change>
2182 Size of this global data has been changed from @old_size to @new_size.
2183 </change>
2184 <effect>
2185 Applications will obtain a different value and execution may change.
2186 </effect>
2187</rule>
2188
2189<rule>
2190 <id>
2191 Return_Type_Became_Void
2192 </id>
2193 <severity>
2194 Medium
2195 </severity>
2196 <kind>
2197 Symbols
2198 </kind>
2199 <change>
2200 Type of return value has been changed from @old_value (@old_size) to void.
2201 </change>
2202 <effect>
2203 Applications will not obtain a return value and execution may change.
2204 </effect>
2205</rule>
2206
2207<rule>
2208 <id>
2209 Return_Type_Became_Void_And_Stack_Layout
2210 </id>
2211 <severity>
2212 High
2213 </severity>
2214 <kind>
2215 Symbols
2216 </kind>
2217 <change>
2218 Type of return value has been changed from @old_value (@old_size) to void.
2219 </change>
2220 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002221 1) Applications will read the wrong memory block instead of the return value.
2222 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.
2223 </effect>
2224</rule>
2225
2226<rule>
2227 <id>
2228 Return_Type_Became_Void_And_Register
2229 </id>
2230 <severity>
2231 High
2232 </severity>
2233 <kind>
2234 Symbols
2235 </kind>
2236 <change>
2237 Type of return value has been changed from @old_value (@old_size) to void.
2238 </change>
2239 <effect>
2240 1) Applications will read the wrong memory block instead of the return value.
2241 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 +04002242 </effect>
2243</rule>
2244
2245<rule>
2246 <id>
2247 Return_Type_From_Void_And_Stack_Layout
2248 </id>
2249 <severity>
2250 High
2251 </severity>
2252 <kind>
2253 Symbols
2254 </kind>
2255 <change>
2256 Type of return value has been changed from void to @new_value (@new_size).
2257 </change>
2258 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002259 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.
2260 </effect>
2261</rule>
2262
2263<rule>
2264 <id>
2265 Return_Type_From_Void_And_Register
2266 </id>
2267 <severity>
2268 High
2269 </severity>
2270 <kind>
2271 Symbols
2272 </kind>
2273 <change>
2274 Type of return value has been changed from void to @new_value (@new_size).
2275 </change>
2276 <effect>
2277 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.
2278 </effect>
2279</rule>
2280
2281<rule>
2282 <id>
2283 Return_Type_From_Void
2284 </id>
2285 <severity>
2286 Low
2287 </severity>
2288 <kind>
2289 Symbols
2290 </kind>
2291 <change>
2292 Type of return value has been changed from void to @new_value (@new_size).
2293 </change>
2294 <effect>
2295 Replacement of return type may indicate a change in its semantic meaning.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002296 </effect>
2297</rule>
2298
2299<rule>
2300 <id>
2301 Return_Type_From_Register_To_Stack
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 @old_value (@old_size) to @new_value (@new_size).
2311 </change>
2312 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002313 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.
2314 2) Applications will read the wrong memory block instead of the return value.
2315 </effect>
2316</rule>
2317
2318<rule>
2319 <id>
2320 Return_Type_And_Register_Became_Hidden_Parameter
2321 </id>
2322 <severity>
2323 High
2324 </severity>
2325 <kind>
2326 Symbols
2327 </kind>
2328 <change>
2329 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2330 </change>
2331 <effect>
2332 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.
2333 2) Applications will read the wrong memory block instead of the return value.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002334 </effect>
2335</rule>
2336
2337<rule>
2338 <id>
2339 Return_Type_From_Stack_To_Register
2340 </id>
2341 <severity>
2342 High
2343 </severity>
2344 <kind>
2345 Symbols
2346 </kind>
2347 <change>
2348 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2349 </change>
2350 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04002351 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.
2352 2) Applications will read the wrong memory block instead of the return value.
2353 </effect>
2354</rule>
2355
2356<rule>
2357 <id>
2358 Return_Type_And_Register_Was_Hidden_Parameter
2359 </id>
2360 <severity>
2361 High
2362 </severity>
2363 <kind>
2364 Symbols
2365 </kind>
2366 <change>
2367 Type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2368 </change>
2369 <effect>
2370 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.
2371 2) Applications will read the wrong memory block instead of the return value.
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002372 </effect>
2373</rule>
2374
2375<rule>
2376 <id>
2377 Global_Data_Became_Non_Const
2378 </id>
2379 <severity>
2380 Medium
2381 </severity>
2382 <kind>
2383 Symbols
2384 </kind>
2385 <change>
2386 This global data became non-const.
2387 </change>
2388 <effect>
2389 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.
2390 </effect>
2391</rule>
2392
2393<rule>
2394 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002395 Global_Data_Removed_Const
2396 </id>
2397 <severity>
2398 Low
2399 </severity>
2400 <kind>
2401 Symbols
2402 </kind>
2403 <change>
2404 Removed **const** qualifier from the type of this global data.
2405 </change>
2406 <effect>
2407 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.
2408 </effect>
2409</rule>
2410
2411<rule>
2412 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002413 Global_Data_Became_Const
2414 </id>
2415 <severity>
2416 Medium
2417 </severity>
2418 <kind>
2419 Symbols
2420 </kind>
2421 <change>
2422 This global data became const.
2423 </change>
2424 <effect>
2425 Any attempts of old applications to change this global data may result in crash.
2426 </effect>
2427</rule>
2428
2429<rule>
2430 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002431 Global_Data_Added_Const
2432 </id>
2433 <severity>
2434 Medium
2435 </severity>
2436 <kind>
2437 Symbols
2438 </kind>
2439 <change>
2440 Added **const** qualifier to the type of this global data.
2441 </change>
2442 <effect>
2443 Any attempts of old applications to change this global data may result in crash.
2444 </effect>
2445</rule>
2446
2447<rule>
2448 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002449 Return_BaseType_And_Size
2450 </id>
2451 <severity>
2452 Medium
2453 </severity>
2454 <kind>
2455 Symbols
2456 </kind>
2457 <change>
2458 Base type of return value has been changed from @old_value (@old_size) to @new_value (@new_size).
2459 </change>
2460 <effect>
2461 Applications will obtain a different return value and execution may change.
2462 </effect>
2463</rule>
2464
2465<rule>
2466 <id>
2467 Return_BaseType
2468 </id>
2469 <severity>
2470 Low
2471 </severity>
2472 <kind>
2473 Symbols
2474 </kind>
2475 <change>
2476 Base type of return value has been changed from @old_value to @new_value.
2477 </change>
2478 <effect>
2479 Replacement of return base type may indicate a change in its semantic meaning.
2480 </effect>
2481</rule>
2482
2483<rule>
2484 <id>
2485 Return_PointerLevel_Increased
2486 </id>
2487 <severity>
2488 Low
2489 </severity>
2490 <kind>
2491 Symbols
2492 </kind>
2493 <change>
2494 The pointer level of return value has been increased from @old_value to @new_value.
2495 </change>
2496 <effect>
2497 Applications will treat the return value as the lower-dimension array and will not read all elements. This may change the behavior of applications.
2498 </effect>
2499</rule>
2500
2501<rule>
2502 <id>
2503 Return_PointerLevel_Decreased
2504 </id>
2505 <severity>
2506 Medium
2507 </severity>
2508 <kind>
2509 Symbols
2510 </kind>
2511 <change>
2512 The pointer level of return value has been decreased from @old_value to @new_value.
2513 </change>
2514 <effect>
2515 Applications may try to access unallocated memory by the dereferencing of new return value and therefore cause a crash.
2516 </effect>
2517</rule>
2518
2519<rule>
2520 <id>
2521 Removed_Parameter
2522 </id>
2523 <severity>
2524 Medium
2525 </severity>
2526 <kind>
2527 Parameters
2528 </kind>
2529 <change>
2530 @param_pos parameter @target has been removed from the calling stack.
2531 </change>
2532 <effect>
2533 This parameter will be ignored by the function.
2534 </effect>
2535</rule>
2536
2537<rule>
2538 <id>
2539 Removed_Unnamed_Parameter
2540 </id>
2541 <severity>
2542 Medium
2543 </severity>
2544 <kind>
2545 Parameters
2546 </kind>
2547 <change>
2548 Parameter @target of type @param_type has been removed from the calling stack.
2549 </change>
2550 <effect>
2551 This parameter will be ignored by the function.
2552 </effect>
2553</rule>
2554
2555<rule>
2556 <id>
2557 Added_Parameter
2558 </id>
2559 <severity>
2560 Medium
2561 </severity>
2562 <kind>
2563 Parameters
2564 </kind>
2565 <change>
2566 Parameter @target of type @param_type has been added to the calling stack.
2567 </change>
2568 <effect>
2569 This parameter will not be initialized by old clients.
2570 </effect>
2571</rule>
2572
2573<rule>
2574 <id>
2575 Added_Unnamed_Parameter
2576 </id>
2577 <severity>
2578 Medium
2579 </severity>
2580 <kind>
2581 Parameters
2582 </kind>
2583 <change>
2584 @param_pos parameter @target has been added to the calling stack.
2585 </change>
2586 <effect>
2587 This parameter will not be initialized by old clients.
2588 </effect>
2589</rule>
2590
2591<rule>
2592 <id>
2593 Removed_Middle_Parameter
2594 </id>
2595 <severity>
2596 High
2597 </severity>
2598 <kind>
2599 Parameters
2600 </kind>
2601 <change>
2602 @param_pos middle parameter @target has been removed from the calling stack.
2603 </change>
2604 <effect>
2605 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2606 </effect>
2607</rule>
2608
2609<rule>
2610 <id>
2611 Removed_Middle_Unnamed_Parameter
2612 </id>
2613 <severity>
2614 High
2615 </severity>
2616 <kind>
2617 Parameters
2618 </kind>
2619 <change>
2620 Middle parameter @target of type @param_type has been removed from the calling stack.
2621 </change>
2622 <effect>
2623 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2624 </effect>
2625</rule>
2626
2627<rule>
2628 <id>
2629 Added_Middle_Parameter
2630 </id>
2631 <severity>
2632 High
2633 </severity>
2634 <kind>
2635 Parameters
2636 </kind>
2637 <change>
2638 Parameter @target of type @param_type has been added to the calling stack at the middle position.
2639 </change>
2640 <effect>
2641 Layout of parameter's stack has been changed and therefore parameters at higher positions in the stack may be incorrectly initialized by applications.
2642 </effect>
2643</rule>
2644
2645<rule>
2646 <id>
2647 Added_Middle_Unnamed_Parameter
2648 </id>
2649 <severity>
2650 High
2651 </severity>
2652 <kind>
2653 Parameters
2654 </kind>
2655 <change>
2656 @param_pos parameter @target has been added to the calling stack at the middle position.
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 Renamed_Parameter
2666 </id>
2667 <severity>
2668 Low
2669 </severity>
2670 <kind>
2671 Parameters
2672 </kind>
2673 <change>
2674 @param_pos parameter @target has been renamed to @new_value.
2675 </change>
2676 <effect>
2677 Renaming of a parameter may indicate a change in its semantic meaning.
2678 </effect>
2679</rule>
2680
2681<rule>
2682 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002683 Symbol_Became_Static
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002684 </id>
2685 <severity>
2686 High
2687 </severity>
2688 <kind>
2689 Symbols
2690 </kind>
2691 <change>
2692 Method became static.
2693 </change>
2694 <effect>
2695 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.
2696 </effect>
2697</rule>
2698
2699<rule>
2700 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002701 Symbol_Became_Non_Static
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002702 </id>
2703 <severity>
2704 High
2705 </severity>
2706 <kind>
2707 Symbols
2708 </kind>
2709 <change>
2710 Method became non-static.
2711 </change>
2712 <effect>
2713 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.
2714 </effect>
2715</rule>
2716
2717<rule>
2718 <id>
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002719 Symbol_Became_Virtual
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002720 </id>
2721 <severity>
2722 High
2723 </severity>
2724 <kind>
2725 Symbols
2726 </kind>
2727 <change>
2728 Method became virtual.
2729 </change>
2730 <effect>
2731 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.
2732 </effect>
2733</rule>
2734
2735<rule>
2736 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002737 Symbol_Became_Non_Virtual
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 non-virtual.
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>
2755 Symbol_Changed_Return
2756 </id>
2757 <severity>
2758 High
2759 </severity>
2760 <kind>
2761 Symbols
2762 </kind>
2763 <change>
2764 Type of return value has been changed from @old_type to @new_type.
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>
2773 Global_Data_Symbol_Changed_Type
2774 </id>
2775 <severity>
2776 High
2777 </severity>
2778 <kind>
2779 Symbols
2780 </kind>
2781 <change>
2782 Type of this global data has been changed from @old_type to @new_type.
2783 </change>
2784 <effect>
2785 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.
2786 </effect>
2787</rule>
2788
2789<rule>
2790 <id>
2791 Symbol_Changed_Parameters
2792 </id>
2793 <severity>
2794 High
2795 </severity>
2796 <kind>
2797 Symbols
2798 </kind>
2799 <change>
2800 Parameters list has been changed.
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>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002809 Method_Became_Non_Const
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002810 </id>
2811 <severity>
2812 High
2813 </severity>
2814 <kind>
2815 Symbols
2816 </kind>
2817 <change>
2818 Method became non-const.
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>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04002827 Method_Became_Const
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002828 </id>
2829 <severity>
2830 High
2831 </severity>
2832 <kind>
2833 Symbols
2834 </kind>
2835 <change>
2836 Method became const.
2837 </change>
2838 <effect>
2839 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.
2840 </effect>
2841</rule>
2842
2843<rule>
2844 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04002845 Method_Became_Volatile
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002846 </id>
2847 <severity>
2848 High
2849 </severity>
2850 <kind>
2851 Symbols
2852 </kind>
2853 <change>
2854 Method became volatile.
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_Volatile
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-volatile.
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>
2881 Changed_Constant
2882 </id>
2883 <severity>
2884 Low
2885 </severity>
2886 <kind>
2887 Constants
2888 </kind>
2889 <change>
2890 The value of constant @target has been changed from @old_value to @new_value.
2891 </change>
2892 <effect>
2893 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.
2894 </effect>
2895</rule>
2896
2897<rule>
2898 <id>
Andrey Ponomarenko8f4b9812013-02-07 19:11:42 +04002899 Added_Constant
2900 </id>
2901 <severity>
2902 Safe
2903 </severity>
2904 <kind>
2905 Constants
2906 </kind>
2907 <change>
2908 The constant @target with value @new_value has been added.
2909 </change>
2910 <effect>
2911 No effect.
2912 </effect>
2913</rule>
2914
2915<rule>
2916 <id>
2917 Removed_Constant
2918 </id>
2919 <severity>
2920 Low
2921 </severity>
2922 <kind>
2923 Constants
2924 </kind>
2925 <change>
2926 The constant @target with value @old_value has been removed.
2927 </change>
2928 <effect>
2929 The value of this constant may no longer be properly handled by new-version library functions.
2930 </effect>
2931</rule>
2932
2933<rule>
2934 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002935 Field_Became_Volatile
2936 </id>
2937 <severity>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04002938 Low
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04002939 </severity>
2940 <kind>
2941 Fields
2942 </kind>
2943 <change>
2944 Field @target became volatile.
2945 </change>
2946 <effect>
2947 The value of this field can begin to change in ways outside the control of old client applications.
2948 </effect>
2949</rule>
2950
2951<rule>
2952 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002953 Field_Became_Non_Volatile
Andrey Ponomarenko1bdef342012-03-19 17:23:47 +04002954 </id>
2955 <severity>
2956 Safe
2957 </severity>
2958 <kind>
2959 Fields
2960 </kind>
2961 <change>
2962 Field @target became non-volatile.
2963 </change>
2964 <effect>
2965 No effect.
2966 </effect>
2967</rule>
2968
2969<rule>
2970 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04002971 Return_Value_Became_Volatile
2972 </id>
2973 <severity>
2974 Low
2975 </severity>
2976 <kind>
2977 Symbols
2978 </kind>
2979 <change>
2980 Return value became volatile.
2981 </change>
2982 <effect>
2983 Old client applications will get volatile object instead of non-volatile, but may be optimized by the compiler and cannot handle volatile objects.
2984 </effect>
2985</rule>
2986
2987<rule>
2988 <id>
2989 Parameter_Became_Non_Volatile
2990 </id>
2991 <severity>
2992 Low
2993 </severity>
2994 <kind>
2995 Symbols
2996 </kind>
2997 <change>
2998 Parameter @target became non-volatile.
2999 </change>
3000 <effect>
3001 Old client applications will pass volatile object to the function that may be optimized by the compiler and cannot handle volatile objects.
3002 </effect>
3003</rule>
3004
3005<rule>
3006 <id>
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003007 Field_Type_Format
3008 </id>
3009 <severity>
3010 Medium
3011 </severity>
3012 <kind>
3013 Fields
3014 </kind>
3015 <change>
3016 Type of field @target has been changed from @old_value to @new_value of different format.
3017 </change>
3018 <effect>
3019 This field may be incorrectly initialized or accessed by applications.
3020 </effect>
3021</rule>
3022
3023<rule>
3024 <id>
3025 Field_BaseType_Format
3026 </id>
3027 <severity>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +04003028 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003029 </severity>
3030 <kind>
3031 Fields
3032 </kind>
3033 <change>
3034 Base type of field @target has been changed from @old_value to @new_value of different format.
3035 </change>
3036 <effect>
3037 This field may be incorrectly initialized or accessed by applications.
3038 </effect>
3039</rule>
3040
3041<rule>
3042 <id>
3043 Parameter_Type_Format
3044 </id>
3045 <severity>
3046 Medium
3047 </severity>
3048 <kind>
3049 Parameters
3050 </kind>
3051 <change>
3052 Type of parameter @target has been changed from @old_value to @new_value of different format.
3053 </change>
3054 <effect>
3055 This parameter may be incorrectly initialized by applications.
3056 </effect>
3057</rule>
3058
3059<rule>
3060 <id>
3061 Parameter_BaseType_Format
3062 </id>
3063 <severity>
Andrey Ponomarenko9927e332012-10-19 10:50:48 +04003064 Medium
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003065 </severity>
3066 <kind>
3067 Parameters
3068 </kind>
3069 <change>
3070 Base type of parameter @target has been changed from @old_value to @new_value of different format.
3071 </change>
3072 <effect>
3073 This parameter may be incorrectly initialized by applications.
3074 </effect>
3075</rule>
3076
3077<rule>
3078 <id>
3079 Return_Type_Format
3080 </id>
3081 <severity>
3082 Medium
3083 </severity>
3084 <kind>
3085 Symbols
3086 </kind>
3087 <change>
3088 Type of return value has been changed from @old_value to @new_value of different format.
3089 </change>
3090 <effect>
3091 Applications will obtain a different return value and execution may change.
3092 </effect>
3093</rule>
3094
3095<rule>
3096 <id>
3097 Return_Type_And_Register
3098 </id>
3099 <severity>
3100 Medium
3101 </severity>
3102 <kind>
3103 Symbols
3104 </kind>
3105 <change>
3106 Type of return value has been changed from @old_value to @new_value.
3107 </change>
3108 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04003109 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 +04003110 </effect>
3111</rule>
3112
3113<rule>
3114 <id>
3115 Return_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 Symbols
3122 </kind>
3123 <change>
3124 Base type of return value 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>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003133 Parameter_Became_Non_VaList
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003134 </id>
3135 <severity>
3136 Low
3137 </severity>
3138 <kind>
3139 Parameters
3140 </kind>
3141 <change>
3142 Type of @param_pos parameter has been changed from ... (va_list) to @new_value.
3143 </change>
3144 <effect>
3145 This parameter may not be initialized by old clients.
3146 </effect>
3147</rule>
3148
3149<rule>
3150 <id>
3151 Parameter_Became_VaList
3152 </id>
3153 <severity>
3154 Low
3155 </severity>
3156 <kind>
3157 Parameters
3158 </kind>
3159 <change>
3160 Type of @param_pos parameter @target has been changed from @old_value to ... (va_list).
3161 </change>
3162 <effect>
3163 The semantic meaning of the parameter may change.
3164 </effect>
3165</rule>
3166
3167<rule>
3168 <id>
3169 Added_Enum_Member
3170 </id>
3171 <severity>
3172 Safe
3173 </severity>
3174 <kind>
3175 Constants
3176 </kind>
3177 <change>
3178 The member @target with value @new_value has been added.
3179 </change>
3180 <effect>
3181 No effect.
3182 </effect>
3183</rule>
3184
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003185<rule>
3186 <id>
3187 Global_Data_Value_Changed
3188 </id>
3189 <severity>
3190 Low
3191 </severity>
3192 <kind>
3193 Symbols
3194 </kind>
3195 <change>
3196 The initial value of this global data has been changed from @old_value to @new_value.
3197 </change>
3198 <effect>
3199 Applications will use an old value of this data instead of the new one. This may cause incorrect behavior of applications.
3200 </effect>
3201</rule>
3202
3203<rule>
3204 <id>
3205 Field_Became_Mutable
3206 </id>
3207 <severity>
3208 Low
3209 </severity>
3210 <kind>
3211 Fields
3212 </kind>
3213 <change>
3214 Field @target became **mutable**.
3215 </change>
3216 <effect>
3217 The value of this field can begin to change in ways outside the control of old client applications.
3218 </effect>
3219</rule>
3220
3221<rule>
3222 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003223 Field_Became_Non_Mutable
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003224 </id>
3225 <severity>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003226 Low
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003227 </severity>
3228 <kind>
3229 Fields
3230 </kind>
3231 <change>
3232 Field @target became **non-mutable**.
3233 </change>
3234 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003235 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 +04003236 </effect>
3237</rule>
3238
3239<rule>
3240 <id>
3241 Method_Became_Private
3242 </id>
3243 <severity>
3244 Low
3245 </severity>
3246 <kind>
3247 Symbols
3248 </kind>
3249 <change>
3250 This method became **private**.
3251 </change>
3252 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003253 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 +04003254 </effect>
3255</rule>
3256
3257<rule>
3258 <id>
3259 Method_Became_Protected
3260 </id>
3261 <severity>
3262 Low
3263 </severity>
3264 <kind>
3265 Symbols
3266 </kind>
3267 <change>
3268 This method became **protected**.
3269 </change>
3270 <effect>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003271 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 +04003272 </effect>
3273</rule>
3274
3275<rule>
3276 <id>
3277 Method_Became_Public
3278 </id>
3279 <severity>
3280 Safe
3281 </severity>
3282 <kind>
3283 Symbols
3284 </kind>
3285 <change>
3286 This method became **public**.
3287 </change>
3288 <effect>
3289 No effect.
3290 </effect>
3291</rule>
3292
3293<rule>
3294 <id>
3295 Global_Data_Became_Private
3296 </id>
3297 <severity>
3298 Low
3299 </severity>
3300 <kind>
3301 Symbols
3302 </kind>
3303 <change>
3304 This global data became **private**.
3305 </change>
3306 <effect>
3307 Old applications will continue using this global data, but it may require a different initialization of the environment.
3308 </effect>
3309</rule>
3310
3311<rule>
3312 <id>
3313 Global_Data_Became_Protected
3314 </id>
3315 <severity>
3316 Low
3317 </severity>
3318 <kind>
3319 Symbols
3320 </kind>
3321 <change>
3322 This global data became **protected**.
3323 </change>
3324 <effect>
3325 Old applications will continue using this global data, but it may require a different initialization of the environment.
3326 </effect>
3327</rule>
3328
3329<rule>
3330 <id>
3331 Global_Data_Became_Public
3332 </id>
3333 <severity>
3334 Safe
3335 </severity>
3336 <kind>
3337 Symbols
3338 </kind>
3339 <change>
3340 This global data became **public**.
3341 </change>
3342 <effect>
3343 No effect.
3344 </effect>
3345</rule>
3346
3347<rule>
3348 <id>
3349 Field_Became_Const
3350 </id>
3351 <severity>
3352 Low
3353 </severity>
3354 <kind>
3355 Types
3356 </kind>
3357 <change>
3358 Field @target became **const**.
3359 </change>
3360 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04003361 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 +04003362 </effect>
3363</rule>
3364
3365<rule>
3366 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003367 Field_Became_Non_Const
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003368 </id>
3369 <severity>
3370 Safe
3371 </severity>
3372 <kind>
3373 Types
3374 </kind>
3375 <change>
3376 Field @target became **non-const**.
3377 </change>
3378 <effect>
3379 No effect.
3380 </effect>
3381</rule>
3382
3383<rule>
3384 <id>
3385 Field_Added_Const
3386 </id>
3387 <severity>
3388 Low
3389 </severity>
3390 <kind>
3391 Types
3392 </kind>
3393 <change>
3394 Added **const** qualifier to field @target.
3395 </change>
3396 <effect>
Andrey Ponomarenkof48ec932012-07-19 18:57:20 +04003397 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 +04003398 </effect>
3399</rule>
3400
3401<rule>
3402 <id>
3403 Field_Removed_Const
3404 </id>
3405 <severity>
3406 Safe
3407 </severity>
3408 <kind>
3409 Types
3410 </kind>
3411 <change>
3412 Removed **const** qualifier from field @target.
3413 </change>
3414 <effect>
3415 No effect.
3416 </effect>
3417</rule>
3418
3419<rule>
3420 <id>
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003421 Field_Became_Private
3422 </id>
3423 <severity>
3424 Low
3425 </severity>
3426 <kind>
3427 Types
3428 </kind>
3429 <change>
3430 Field @target became **private**.
3431 </change>
3432 <effect>
3433 Old applications will continue using this field, but it may require a different initialization of class object.
3434 </effect>
3435</rule>
3436
3437<rule>
3438 <id>
3439 Field_Became_Protected
3440 </id>
3441 <severity>
3442 Low
3443 </severity>
3444 <kind>
3445 Types
3446 </kind>
3447 <change>
3448 Field @target became **protected**.
3449 </change>
3450 <effect>
3451 Old applications will continue using this field, but it may require a different initialization of class object.
3452 </effect>
3453</rule>
3454
3455<rule>
3456 <id>
Andrey Ponomarenko0d5917f2012-04-16 16:44:09 +04003457 Virtual_Method_Became_Pure
3458 </id>
3459 <severity>
3460 Medium
3461 </severity>
3462 <kind>
3463 Types
3464 </kind>
3465 <change>
3466 Virtual method @target became **pure**.
3467 </change>
3468 <effect>
3469 Old applications will not provide implementation for this pure virtual method. This may result in crash or incorrect behavior of applications.
3470 </effect>
3471</rule>
3472
3473<rule>
3474 <id>
3475 Virtual_Method_Became_Non_Pure
3476 </id>
3477 <severity>
3478 Safe
3479 </severity>
3480 <kind>
3481 Types
3482 </kind>
3483 <change>
3484 Virtual method @target became **non-pure**.
3485 </change>
3486 <effect>
3487 No effect.
3488 </effect>
3489</rule>
3490
Andrey Ponomarenkofe00e7e2013-05-24 16:48:30 +04003491<rule>
3492 <id>
3493 Type_Became_Opaque
3494 </id>
3495 <severity>
3496 Medium
3497 </severity>
3498 <kind>
3499 Types
3500 </kind>
3501 <change>
3502 This type became **opaque**.
3503 </change>
3504 <effect>
3505 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.
3506 </effect>
3507</rule>
3508
Andrey Ponomarenkoab282102012-03-11 11:57:02 +04003509</rules>