diff -Nru macchanger-1.7.0/debian/changelog macchanger-1.7.0/debian/changelog --- macchanger-1.7.0/debian/changelog 2014-02-01 11:20:44.000000000 -0600 +++ macchanger-1.7.0/debian/changelog 2016-02-15 16:37:29.000000000 -0600 @@ -1,3 +1,9 @@ +macchanger (1.7.0-1ubuntu1) trusty; urgency=medium + + * Fix random MAC changing (LP: #1316278) + + -- Laine Gholson Mon, 15 Feb 2016 16:34:47 -0600 + macchanger (1.7.0-1) unstable; urgency=medium * New upstream release (Closes: #718849) diff -Nru macchanger-1.7.0/debian/patches/08-fix_random_MAC_choice.patch macchanger-1.7.0/debian/patches/08-fix_random_MAC_choice.patch --- macchanger-1.7.0/debian/patches/08-fix_random_MAC_choice.patch 2014-02-01 11:20:44.000000000 -0600 +++ macchanger-1.7.0/debian/patches/08-fix_random_MAC_choice.patch 2016-02-15 16:34:28.000000000 -0600 @@ -12,9 +12,11 @@ src/main.c | 1 + 2 files changed, 34 insertions(+), 19 deletions(-) ---- macchanger.orig/src/mac.c -+++ macchanger/src/mac.c -@@ -41,6 +41,13 @@ mc_mac_dup (const mac_t *mac) +Index: macchanger-1.7.0/src/mac.c +=================================================================== +--- macchanger-1.7.0.orig/src/mac.c 2013-04-18 00:27:17.000000000 -0500 ++++ macchanger-1.7.0/src/mac.c 2016-02-15 16:34:19.689999862 -0600 +@@ -41,6 +41,13 @@ return new; } @@ -28,7 +30,7 @@ void mc_mac_free (mac_t *mac) -@@ -68,27 +75,34 @@ mc_mac_random (mac_t *mac, unsigned char +@@ -68,27 +75,32 @@ * x1:, x3:, x5:, x7:, x9:, xB:, xD: and xF: */ @@ -36,9 +38,25 @@ - case 6: - /* 8th bit: Unicast / Multicast address - * 7th bit: BIA (burned-in-address) / locally-administered -+ mac_t newmac; -+ mc_mac_copy(mac, &newmac); -+ +- */ +- mac->byte[0] = (random()%255) & 0xFC; +- mac->byte[1] = random()%255; +- mac->byte[2] = random()%255; +- case 3: +- mac->byte[3] = random()%255; +- mac->byte[4] = random()%255; +- mac->byte[5] = random()%255; +- } ++ mac_t origmac; ++ mc_mac_copy(mac, &origmac); + +- /* Handle the burned-in-address bit +- */ +- if (set_bia) { +- mac->byte[0] &= ~2; +- } else { +- mac->byte[0] |= 2; +- } + do { + switch (last_n_bytes) { + case 6: @@ -55,36 +73,21 @@ + } + + /* Handle the burned-in-address bit - */ -- mac->byte[0] = (random()%255) & 0xFC; -- mac->byte[1] = random()%255; -- mac->byte[2] = random()%255; -- case 3: -- mac->byte[3] = random()%255; -- mac->byte[4] = random()%255; -- mac->byte[5] = random()%255; -- } ++ */ + if (set_bia) { + mac->byte[0] &= ~2; + } else { + mac->byte[0] |= 2; + } -+ } while (mc_mac_equal (&newmac, mac)); - -- /* Handle the burned-in-address bit -- */ -- if (set_bia) { -- mac->byte[0] &= ~2; -- } else { -- mac->byte[0] |= 2; -- } -+ mc_mac_copy(&newmac, mac); ++ } while (mc_mac_equal (&origmac, mac)); } ---- macchanger.orig/src/main.c -+++ macchanger/src/main.c -@@ -274,6 +274,7 @@ main (int argc, char *argv[]) +Index: macchanger-1.7.0/src/main.c +=================================================================== +--- macchanger-1.7.0.orig/src/main.c 2016-02-15 16:32:00.000000000 -0600 ++++ macchanger-1.7.0/src/main.c 2016-02-15 16:32:00.000000000 -0600 +@@ -274,6 +274,7 @@ /* Is the same MAC? */ if (mc_mac_equal (mac, mac_faked)) { printf ("It's the same MAC!!\n");