[5518] in Moira

home help back first fref pref prev next nref lref last post

eunice segfault

daemon@ATHENA.MIT.EDU (Evan Broder)
Sun Jan 3 13:02:58 2010

MIME-Version: 1.0
Date: Sun, 3 Jan 2010 12:02:48 -0600
Message-ID: <178868c41001031002l1217266fvf7f2c95d79657597@mail.gmail.com>
From: Evan Broder <broder@MIT.EDU>
To: moiradev@mit.edu
Content-Type: multipart/mixed; boundary=00504502af5ba7fa62047c46695c

--00504502af5ba7fa62047c46695c
Content-Type: text/plain; charset=ISO-8859-1

Hello again -
    I noticed today that eunice segfaulted when printing out the "last
mod" line of its status.

It looks like this is because save_printer_info increments the
destination index when it's copying the information from Moira. To
compensate for this, all of the indices into the returned array were
also incremented by one, but in the case of PRN_MODWITH, this put the
index out past the end of the array, causing a segfault.

eunice-segfault.diff removes the extra index increment everywhere it's
used, and corrects the segfault.

Thanks,
- Evan

--00504502af5ba7fa62047c46695c
Content-Type: application/octet-stream; name="eunice-segfault.diff"
Content-Disposition: attachment; filename="eunice-segfault.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g404qxtm0

SW5kZXg6IGNsaWVudHMvZXVuaWNlL2V1bmljZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGNsaWVudHMvZXVu
aWNlL2V1bmljZS5jCShyZXZpc2lvbiAzOTQ1KQorKysgY2xpZW50cy9ldW5pY2UvZXVuaWNlLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTQxNyw0NCArNDE3LDQ0IEBACiAKICAgICAgIHBhcmd2WzBdID0g
cXVldWVuYW1lOwogICAgICAgaWYgKG5ld25hbWUgJiYgcmVuYW1lX2ZsYWcpCi0JcGFyZ3ZbUFJO
X05BTUUgKyAxXSA9IG5ld25hbWU7CisJcGFyZ3ZbUFJOX05BTUVdID0gbmV3bmFtZTsKICAgICAg
IGlmICh0eXBlICE9IE5VTEwpCi0JcGFyZ3ZbUFJOX1RZUEUgKyAxXSA9IHR5cGU7CisJcGFyZ3Zb
UFJOX1RZUEVdID0gdHlwZTsKICAgICAgIGlmIChod3R5cGUgIT0gTlVMTCkKLQlwYXJndltQUk5f
SFdUWVBFICsgMV0gPSBod3R5cGU7CisJcGFyZ3ZbUFJOX0hXVFlQRV0gPSBod3R5cGU7CiAKICAg
ICAgIGlmIChkdXBsZXhuYW1lICE9IE5VTEwpCi0JcGFyZ3ZbUFJOX0RVUExFWE5BTUUgKyAxXSA9
IGR1cGxleG5hbWU7CisJcGFyZ3ZbUFJOX0RVUExFWE5BTUVdID0gZHVwbGV4bmFtZTsKIAogICAg
ICAgaWYgKGhvc3RuYW1lICE9IE5VTEwpCi0JcGFyZ3ZbUFJOX0hPU1ROQU1FICsgMV0gPSBob3N0
bmFtZTsKKwlwYXJndltQUk5fSE9TVE5BTUVdID0gaG9zdG5hbWU7CiAKICAgICAgIGlmIChsb2dz
ZXJ2ZXIgIT0gTlVMTCkKLQlwYXJndltQUk5fTE9HSE9TVCArIDFdID0gbG9nc2VydmVyOworCXBh
cmd2W1BSTl9MT0dIT1NUXSA9IGxvZ3NlcnZlcjsKIAogICAgICAgaWYgKHByaW50c2VydmVyICE9
IE5VTEwpCi0JcGFyZ3ZbUFJOX1JNICsgMV0gPSBwcmludHNlcnZlcjsKKwlwYXJndltQUk5fUk1d
ID0gcHJpbnRzZXJ2ZXI7CiAKICAgICAgIGlmIChyZWFsbmFtZSAhPSBOVUxMKQotCXBhcmd2W1BS
Tl9SUCArIDFdID0gcmVhbG5hbWU7CisJcGFyZ3ZbUFJOX1JQXSA9IHJlYWxuYW1lOwogCiAgICAg
ICBpZiAocXVvdGFzZXJ2ZXIgIT0gTlVMTCAmJiBzdHJjbXAocXVvdGFzZXJ2ZXIsIltOT05FXSIp
KQotCXBhcmd2W1BSTl9SUSArIDFdID0gKGNoYXIgKikgcXVvdGFzZXJ2ZXI7CisJcGFyZ3ZbUFJO
X1JRXSA9IChjaGFyICopIHF1b3Rhc2VydmVyOwogCiAgICAgICBpZiAoa2EgIT0gLTEpCi0JcGFy
Z3ZbUFJOX0tBICsgMV0gPSBrYSA/ICIxIiA6ICIwIjsKKwlwYXJndltQUk5fS0FdID0ga2EgPyAi
MSIgOiAiMCI7CiAgICAgICBpZiAobHByYWNsICE9IE5VTEwpCi0JcGFyZ3ZbUFJOX0FDICsgMV0g
PSBscHJhY2w7CisJcGFyZ3ZbUFJOX0FDXSA9IGxwcmFjbDsKICAgICAgIGlmIChscGNhY2wgIT0g
TlVMTCkKLQlwYXJndltQUk5fTFBDX0FDTCArIDFdID0gbHBjYWNsOworCXBhcmd2W1BSTl9MUENf
QUNMXSA9IGxwY2FjbDsKICAgICAgIGlmIChiYW5uZXIgIT0gLTEpCi0JcGFyZ3ZbUFJOX0JBTk5F
UiArIDFdID0gYmFubmVyID8gIjEiIDogIjAiOworCXBhcmd2W1BSTl9CQU5ORVJdID0gYmFubmVy
ID8gIjEiIDogIjAiOwogICAgICAgaWYgKGxvY2F0aW9uICE9IE5VTEwpCi0JcGFyZ3ZbUFJOX0xP
Q0FUSU9OICsgMV0gPSBsb2NhdGlvbjsKKwlwYXJndltQUk5fTE9DQVRJT05dID0gbG9jYXRpb247
CiAgICAgICBpZiAoY29udGFjdCAhPSBOVUxMKQotCXBhcmd2W1BSTl9DT05UQUNUICsgMV0gPSBj
b250YWN0OworCXBhcmd2W1BSTl9DT05UQUNUXSA9IGNvbnRhY3Q7CiAKLSAgICAgICBwYXJndltQ
Uk5fTU9EQlkgKyAxXSA9IHBhcmd2W1BSTl9NT0RUSU1FICsgMV0gPSBwYXJndltQUk5fTU9EV0lU
SCArIDFdID0gTlVMTDsKKyAgICAgICBwYXJndltQUk5fTU9EQlldID0gcGFyZ3ZbUFJOX01PRFRJ
TUVdID0gcGFyZ3ZbUFJOX01PRFdJVEhdID0gTlVMTDsKIAogICAgICAgc3RhdHVzID0gd3JhcF9t
cl9xdWVyeSgidXBkYXRlX3ByaW50ZXIiLCBDb3VudEFyZ3MocGFyZ3YpLCBwYXJndiwgTlVMTCwg
TlVMTCk7CiAgICAgICBpZiAoc3RhdHVzKQpAQCAtNDg1LDcgKzQ4NSw3IEBACiAJfQogCiAgICAg
ICBpZiAoaG9zdG5hbWUgPT0gTlVMTCkKLQl1YXJndlswXSA9IChjaGFyICopIHN0cmR1cCAocGFy
Z3ZbUFJOX0hPU1ROQU1FICsgMV0pOworCXVhcmd2WzBdID0gKGNoYXIgKikgc3RyZHVwIChwYXJn
dltQUk5fSE9TVE5BTUVdKTsKICAgICAgIGVsc2UKICAgICAgICAgdWFyZ3ZbMF0gPSAoY2hhciAq
KSBzdHJkdXAgKGhvc3RuYW1lKTsKICAgICAgIHVhcmd2WzFdID0gKGNoYXIgKikgc3RyZHVwICht
YWMpOwpAQCAtNTYwLDMxICs1NjAsMzEgQEAKICAgICAgIGV4aXQgKDEpOwogICAgIH0KIAotICBz
dGF0dXMgPSB3cmFwX21yX3F1ZXJ5KCJnZXRfaG9zdF9od2FkZHIiLCAxLCAmcGFyZ3ZbUFJOX0hP
U1ROQU1FICsgMV0sIAorICBzdGF0dXMgPSB3cmFwX21yX3F1ZXJ5KCJnZXRfaG9zdF9od2FkZHIi
LCAxLCAmcGFyZ3ZbUFJOX0hPU1ROQU1FXSwgCiAgICAgc2F2ZV9od2FkZHIsICZod2FkZHIpOwog
CiAgIGlmIChzdGF0dXMpCiAgICAgc3ByaW50ZiAoaHdhZGRyLCJub25lIik7CiAKLSAgYmFubmVy
ID0gYXRvaShwYXJndltQUk5fQkFOTkVSICsgMV0pOworICBiYW5uZXIgPSBhdG9pKHBhcmd2W1BS
Tl9CQU5ORVJdKTsKIAotICBwcmludGYoIlByaW50ZXI6ICUtMThzIER1cGxleCBxdWV1ZTogJS0x
OHNcbiIsIHBhcmd2W1BSTl9OQU1FICsgMV0sCi0gICAgICAgICAgKnBhcmd2W1BSTl9EVVBMRVhO
QU1FICsgMV0gPyBwYXJndltQUk5fRFVQTEVYTkFNRSArIDFdIDogIltub25lXSIpOworICBwcmlu
dGYoIlByaW50ZXI6ICUtMThzIER1cGxleCBxdWV1ZTogJS0xOHNcbiIsIHBhcmd2W1BSTl9OQU1F
XSwKKyAgICAgICAgICAqcGFyZ3ZbUFJOX0RVUExFWE5BTUVdID8gcGFyZ3ZbUFJOX0RVUExFWE5B
TUVdIDogIltub25lXSIpOwogICBwcmludGYoIlR5cGU6ICUtMTBzIEhhcmR3YXJlIHR5cGU6ICUt
MTBzIEhhcmR3YXJlIGFkZHJlc3M6ICVzXG4iLAotICAgICAgICAgIHBhcmd2W1BSTl9UWVBFICsg
MV0sIHBhcmd2W1BSTl9IV1RZUEUgKyAxXSwgaHdhZGRyKTsKLSAgcHJpbnRmKCJQcmludGVyIGhv
c3RuYW1lOiAlc1xuIiwgcGFyZ3ZbUFJOX0hPU1ROQU1FICsgMV0pOwotICBwcmludGYoIlByaW50
ZXIgbG9nIGhvc3Q6ICVzXG4iLCBwYXJndltQUk5fTE9HSE9TVCArIDFdKTsKLSAgcHJpbnRmKCJT
cG9vbCBob3N0OiAlc1xuIiwgcGFyZ3ZbUFJOX1JNICsgMV0pOwotICBwcmludGYoIlJlbW90ZSBQ
cmludGVyIE5hbWU6ICUtMTBzIEJhbm5lciBwYWdlOiAlc1xuIiwgcGFyZ3ZbUFJOX1JQICsgMV0s
CisgICAgICAgICAgcGFyZ3ZbUFJOX1RZUEVdLCBwYXJndltQUk5fSFdUWVBFXSwgaHdhZGRyKTsK
KyAgcHJpbnRmKCJQcmludGVyIGhvc3RuYW1lOiAlc1xuIiwgcGFyZ3ZbUFJOX0hPU1ROQU1FXSk7
CisgIHByaW50ZigiUHJpbnRlciBsb2cgaG9zdDogJXNcbiIsIHBhcmd2W1BSTl9MT0dIT1NUXSk7
CisgIHByaW50ZigiU3Bvb2wgaG9zdDogJXNcbiIsIHBhcmd2W1BSTl9STV0pOworICBwcmludGYo
IlJlbW90ZSBQcmludGVyIE5hbWU6ICUtMTBzIEJhbm5lciBwYWdlOiAlc1xuIiwgcGFyZ3ZbUFJO
X1JQXSwKICAgICAgICAgICBiYW5uZXIgPyAoIGJhbm5lciA9PSBQUk5fQkFOTkVSX0ZJUlNUID8g
IlllcyIgOiAiTGFzdCIgKSA6ICJObyIpOwogICBwcmludGYoIkF1dGhlbnRpY2F0aW9uOiAlLTNz
IFByaWNlL3BhZ2U6ICUtM3MgIFF1b3RhIFNlcnZlcjogJXNcbiIsCi0gICAgICAgICAgYXRvaShw
YXJndltQUk5fS0EgKyAxXSkgPyAieWVzIiA6ICJubyIsIHBhcmd2W1BSTl9QQyArIDFdLCBwYXJn
dltQUk5fUlEgKyAxXSk7CisgICAgICAgICAgYXRvaShwYXJndltQUk5fS0FdKSA/ICJ5ZXMiIDog
Im5vIiwgcGFyZ3ZbUFJOX1BDXSwgcGFyZ3ZbUFJOX1JRXSk7CiAgIHByaW50ZigiUmVzdHJpY3Qg
bGlzdDogJS0yM3MgIExQQyBBQ0w6ICUtMjNzXG4iLAotICAgICAgICAgIHBhcmd2W1BSTl9BQyAr
IDFdLCBwYXJndltQUk5fTFBDX0FDTCArIDFdKTsKLSAgcHJpbnRmKCJMb2NhdGlvbjogJXNcbiIs
IHBhcmd2W1BSTl9MT0NBVElPTiArIDFdKTsKLSAgcHJpbnRmKCJDb250YWN0OiAlc1xuIiwgcGFy
Z3ZbUFJOX0NPTlRBQ1QgKyAxXSk7CisgICAgICAgICAgcGFyZ3ZbUFJOX0FDXSwgcGFyZ3ZbUFJO
X0xQQ19BQ0xdKTsKKyAgcHJpbnRmKCJMb2NhdGlvbjogJXNcbiIsIHBhcmd2W1BSTl9MT0NBVElP
Tl0pOworICBwcmludGYoIkNvbnRhY3Q6ICVzXG4iLCBwYXJndltQUk5fQ09OVEFDVF0pOwogICBw
cmludGYoIlxuIik7Ci0gIHByaW50ZigiTGFzdCBtb2QgYnkgJXMgYXQgJXMgd2l0aCAlcy5cbiIs
IHBhcmd2W1BSTl9NT0RCWSArIDFdLCBwYXJndltQUk5fTU9EVElNRSArIDFdLCBwYXJndltQUk5f
TU9EV0lUSCArIDFdKTsKKyAgcHJpbnRmKCJMYXN0IG1vZCBieSAlcyBhdCAlcyB3aXRoICVzLlxu
IiwgcGFyZ3ZbUFJOX01PREJZXSwgcGFyZ3ZbUFJOX01PRFRJTUVdLCBwYXJndltQUk5fTU9EV0lU
SF0pOwogCiAgIHJldHVybiBNUl9DT05UOwogfQpAQCAtNTk3LDcgKzU5Nyw3IEBACiAgIGNoYXIg
KipuYXJndiA9IGhpbnQ7CiAKICAgZm9yIChhcmdjID0gMDsgYXJnYyA8IFBSTl9FTkQ7IGFyZ2Mr
KykKLSAgICBuYXJndlthcmdjICsgMV0gPSBzdHJkdXAoYXJndlthcmdjXSk7CisgICAgbmFyZ3Zb
YXJnY10gPSBzdHJkdXAoYXJndlthcmdjXSk7CiAgIHJldHVybiBNUl9DT05UOwogfQogCg==
--00504502af5ba7fa62047c46695c--

home help back first fref pref prev next nref lref last post