From charlie@stat.umn.edu  Fri Oct 26 22:50:09 2001
From: charlie@stat.umn.edu (charlie@stat.umn.edu)
Date: Fri, 26 Oct 2001 23:50:09 +0200 (MET DST)
Subject: [Rd] psignrank and pwilcox null pointer deref (PR#1149)
Message-ID: <200110262150.XAA04192@pubhealth.ku.dk>

Full_Name: Charles J. Geyer
Version: 1.3.1
OS: SuSE 7.2
Submission from: (NULL) (134.84.86.22)


in line 90 of signrank.c and lines 114 and 273 of wilcox.c calloc is used and
the return is not checked to see if it is null (violating numbers 2 and 6 of
the ten commandments for C programmers).  The following code thus makes
R segfault (for suitably large values of 1000)

for (n in seq(100, 1000, 100)) {
   mu <- n * (n + 1) / 4
   sigma <- sqrt(n * (n + 1) * (2 * n + 1) / 24)
   z <- floor(qnorm(0.05, mu, sigma))
   p <- psignrank(z, n)
   cat("z = ", z, ", n = ", n, ", p = ", p, "\n", sep="")
}

for (n in seq(100, 1000, 100)) {
   m <- n
   mu <- n * m / 2
   sigma <- sqrt(m * n * (m + n + 1) / 12)
   z <- floor(qnorm(0.05, mu, sigma))
   p <- pwilcox(z, m, n)
   cat("z = ", z, ", m = ", m, ", n = ", n, ", p = ", p, "\n", sep="")
}

A fix is hard because a good solution would free all the previously allocated
memory before dying.  Probably a better algorithm is needed.  But I don't know
if one exists.

Anyway the current behavior is unacceptable.







-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-devel mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !)  To: r-devel-request@stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._


[Rd] psignrank and pwilcox null pointer deref (PR#1149)
charlie@stat.umn.edu