Package: release.debian.org Severity: normal User: [email protected] Usertags: unblock
Please unblock package bsdgames-nonfree. Version 2.17-5 fixes a bug (#695262) that could make saved games fail to load properly, leading to crashes, due to inappropriate (de)serialization of raw pointers to string constants. (This technique was always fragile, and enabling PIE hardening in 2.17-4 had the side effect of breaking it altogether.) The new version also corrects one apparent typo to ensure better internal consistency, including across saves. Please see below or http://anonscm.debian.org/gitweb/?p=users/ucko/bsdgames-nonfree.git;a=commitdiff;h=75272079ba9b12b43149965f328ab6ac80d21715;hp=8af82527b675f742c91e1ea662c6d107b18f4809 for the changes from 2.17-4, which is in testing. unblock bsdgames-nonfree/2.17-5 Thanks! diff -u bsdgames-nonfree-2.17/debian/changelog bsdgames-nonfree-2.17/debian/changelog --- bsdgames-nonfree-2.17/debian/changelog +++ bsdgames-nonfree-2.17/debian/changelog @@ -1,3 +1,16 @@ +bsdgames-nonfree (2.17-5) unstable; urgency=high + + * rogue/init.c: Give the initial bow a damage value of 1d1 for + consistency with object.c; 1d2 was presumably a typo. + * rogue/{object.c,rogue.h,save.c}: factor an assign_damage function out + of gr_weapon, and call it from read_pack because saved values (raw + pointers to string constants) may be invalid. (The setup was always + fragile, and broke altogether when 2.17-4 made the executable + position-independent and subject to loading at randomized addresses.) + (Closes: #695262.) + + -- Aaron M. Ucko <[email protected]> Thu, 06 Dec 2012 21:53:01 -0500 + bsdgames-nonfree (2.17-4) unstable; urgency=low * config.params: defer to debian/rules for build flags (which weren't only in patch2: unchanged: --- bsdgames-nonfree-2.17.orig/rogue/rogue.h +++ bsdgames-nonfree-2.17/rogue/rogue.h @@ -464,6 +464,7 @@ void add_traps(void); void aggravate(void); void aim_monster(object *); +void assign_damage(object *); void bounce(short, short, short, short, short); void byebye(int); void c_object_for_wizard(void); only in patch2: unchanged: --- bsdgames-nonfree-2.17.orig/rogue/object.c +++ bsdgames-nonfree-2.17/rogue/object.c @@ -533,6 +533,13 @@ } } } + assign_damage(obj); +} + +void +assign_damage(obj) + object *obj; +{ switch(obj->which_kind) { case BOW: case DART: @@ -556,6 +563,9 @@ case TWO_HANDED_SWORD: obj->damage = "4d5"; break; + default: + obj->damage = "1d1"; + break; } } only in patch2: unchanged: --- bsdgames-nonfree-2.17.orig/rogue/save.c +++ bsdgames-nonfree-2.17/rogue/save.c @@ -263,6 +263,10 @@ } new_obj = alloc_object(); *new_obj = read_obj; + /* new_obj->damage is a pointer, and not guaranteed to be valid + * across runs with slightly different binaries, or even the + * same binary if built as a position-independent executable. */ + assign_damage(new_obj); if (is_rogue) { if (new_obj->in_use_flags & BEING_WORN) { do_wear(new_obj); only in patch2: unchanged: --- bsdgames-nonfree-2.17.orig/rogue/init.c +++ bsdgames-nonfree-2.17/rogue/init.c @@ -168,7 +168,7 @@ obj = alloc_object(); obj->what_is = WEAPON; obj->which_kind = BOW; - obj->damage = "1d2"; + obj->damage = "1d1"; /* per object.c; was 1d2 */ obj->hit_enchant = 1; obj->d_enchant = 0; obj->identified = 1; -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected] Archive: http://lists.debian.org/20121207181933.9741.12420.report...@ghostwheel.internal.ucko.debian.net

