Re: [Haskell-cafe] Enhancing the security of hackage
On Thu, Dec 9, 2010 at 7:04 AM, Ketil Malde ke...@malde.org wrote: Vincent Hanquez t...@snarc.org writes: You might have misunderstood what I was talking about. I'm proposing signing on the hackage server on reception of the package, Okay, fair enough. You can't *enforce* this, of course, since I might work without general internet access but a local mirror, but you could require me to run 'cabal --dont-check-signatures' or similar, so this would still make a hostile-operated mirror less useful. OTOH, if I should suggest improving the security of Hackage, I would prioritize: a) email the maintainer whenever a new upload is accepted - preferably with a notice about whether the build works or fails. Mabye also highlight the case when maintainer differs from uploader - if that doesn't give a ton of false positives. b) email the *previous* maintainer when a new upload is accepted and the maintainer field has changed. This way, somebody is likely to actually *notice* when some evil person uploads a trojan mtl or bytestring or whatever. The downside is more mail, and the people who run Hackage have been wary about this. So perhaps even this is on the wrong side of the cost/benefit fence. (People with admin privileges (staff or hackers) to hackage can of course still work around everything - crypto signatures or email-schemes.) -k Also, perhaps put the signatures on a separate machine from the one containing .tar.gz. For a 3rd party to corrupt a package, they'd need to hack 2 machines. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] LLVM, type-level?
On Tue, Dec 7, 2010 at 1:31 PM, Henning Thielemann lemm...@henning-thielemann.de wrote: On Tue, 7 Dec 2010, Lally Singh wrote: Hey all, I'm generating a structure definition from input, and would like to generate some LLVM code that can use it. I see an 'alloca' function in LLVM.Core that may do the trick, but takes a static type (Ptr a), which I wouldn't have. Is there a dynamic variant? I'm currently generating a TypeDesc Struct type. How much flexibility do you need? Is the user really allowed to specify an arbitrary 'struct' declaration? This could be a security hole. If you really want it, I think you would have to use existential quantification in order to construct a user defined type at runtime. Could you elaborate on this a bit more? Or is there an example somewhere I could look at? Thanks, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] LLVM, type-level?
Hey all, I'm generating a structure definition from input, and would like to generate some LLVM code that can use it. I see an 'alloca' function in LLVM.Core that may do the trick, but takes a static type (Ptr a), which I wouldn't have. Is there a dynamic variant? I'm currently generating a TypeDesc Struct type. Also, is everything under LLVM.Core.* private (not LLVM.Core, but LLVM.Core.Util,etc)? I saw from some blog posts that Core.Util has a function for (I think) getting the a function's parameters, but I can't seem to find a way to access it. Is there another way to get the arguments to a function? Thanks for your help, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] LLVM, type-level?
On Tue, Dec 7, 2010 at 1:31 PM, Henning Thielemann lemm...@henning-thielemann.de wrote: On Tue, 7 Dec 2010, Lally Singh wrote: Hey all, I'm generating a structure definition from input, and would like to generate some LLVM code that can use it. I see an 'alloca' function in LLVM.Core that may do the trick, but takes a static type (Ptr a), which I wouldn't have. Is there a dynamic variant? I'm currently generating a TypeDesc Struct type. How much flexibility do you need? Is the user really allowed to specify an arbitrary 'struct' declaration? This could be a security hole. If you really want it, I think you would have to use existential quantification in order to construct a user defined type at runtime. Yeah, the program will take in a declaration of a (basic) struct, with doubles, floats, and integer members. It'll generate an LLVM program that'll read that sort of struct from a shared memory segment. Also, is everything under LLVM.Core.* private (not LLVM.Core, but LLVM.Core.Util,etc)? I saw from some blog posts that Core.Util has a function for (I think) getting the a function's parameters, but I can't seem to find a way to access it. Is there another way to get the arguments to a function? I do not understand. The example you posted recently, was a function with parameters. Isn't that what you need? I'd like to get the runtime arguments of a function. In my case, main()'s command-line arguments to get the shared-memory ID. ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] LLVM, getElementPtr?
Hey all, I'm trying to get started generating LLVM code, but I'm getting a rather cryptic error. I wanted to create a function that takes a string and generates a function calling to puts with that string as an argument: buildReaderFun :: String - CodeGenModule (Function (IO ())) buildReaderFun nm = do puts - newNamedFunction ExternalLinkage puts :: TFunction (Ptr Word8 - IO Word32) greetz - createStringNul nm func - createFunction ExternalLinkage $ do tmp - getElementPtr0 greetz (0 :: Word32, ()) call puts tmp -- Throw away return value. ret () return func (based off of some code at this blog post: http://augustss.blogspot.com/2009/01/llvm-llvm-low-level-virtual-machine-is.html ) But, I get this error: /research/phd/libmet/Listener.hs:16:11: Ambiguous type variable `n' in the constraint: `Data.TypeLevel.Num.Sets.NatI n' arising from a use of `getElementPtr0' at /research/phd/libmet/Listener.hs:16:11-49 Probable fix: add a type signature that fixes these type variable(s) My attempts at figuring out what type-level has to do with this, and how to satisfy it have so far proven unsuccessful. Can anyone shed a little light on what's going on? Or pointers to some documentation on any of this? Cheers, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] LLVM, getElementPtr?
Thanks for your help. Replying inline On Sun, Dec 5, 2010 at 1:28 PM, Henning Thielemann lemm...@henning-thielemann.de wrote: On Sun, 5 Dec 2010, Lally Singh wrote: Hey all, I'm trying to get started generating LLVM code, but I'm getting a rather cryptic error. Btw. there is haskell-l...@projects.haskell.org buildReaderFun :: String - CodeGenModule (Function (IO ())) buildReaderFun nm = do puts - newNamedFunction ExternalLinkage puts :: TFunction (Ptr Word8 - IO Word32) greetz - createStringNul nm func - createFunction ExternalLinkage $ do tmp - getElementPtr0 greetz (0 :: Word32, ()) You have to add a type annotation to greetz like (greetz :: Array D42 Word8) which limits your string to a length of 42 bytes. If you do not know the length, better use withStringNul. I implemented the current behavior, because the former implementation was unsafe. I'm sorry, the type signature for withStringNul is over my head. withStringNul :: String - (forall n. (Nat n) = Global (Array n Word8) - CodeGenModule a) - CodeGenModule a On the LLVM side, I'm looking to simply create a string constant I can pass in, such as ConstantArray::get(..). I *think* withStringNul will generate code to build a runtime-length determined string? Sorry, I'm a little thick. call puts tmp -- Throw away return value. ret () return func My attempts at figuring out what type-level has to do with this, and how to satisfy it have so far proven unsuccessful. type-level provides type level integers, and thus allows for static checking of sizes, such as the number of bits of an integer type. Thanks -- sorry -- I'm guessing it's to make sure we're generating valid code? Cheers, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] LLVM, getElementPtr?
No wait, sorry. buildReaderFun :: String - CodeGenModule (Function (IO ())) buildReaderFun nm = do puts - newNamedFunction ExternalLinkage puts :: TFunction (Ptr Word8 - IO Word32) let callPuts greetz = createFunction ExternalLinkage $ do tmp - getElementPtr greetz (0 :: Word32,(0 :: Word32, ())) call puts tmp -- Throw away return value. ret () withStringNul nm callPuts Is that how it's intended? Cheers, -Lally On Sun, Dec 5, 2010 at 3:35 PM, Lally Singh lally.si...@gmail.com wrote: Thanks for your help. Replying inline On Sun, Dec 5, 2010 at 1:28 PM, Henning Thielemann lemm...@henning-thielemann.de wrote: On Sun, 5 Dec 2010, Lally Singh wrote: Hey all, I'm trying to get started generating LLVM code, but I'm getting a rather cryptic error. Btw. there is haskell-l...@projects.haskell.org buildReaderFun :: String - CodeGenModule (Function (IO ())) buildReaderFun nm = do puts - newNamedFunction ExternalLinkage puts :: TFunction (Ptr Word8 - IO Word32) greetz - createStringNul nm func - createFunction ExternalLinkage $ do tmp - getElementPtr0 greetz (0 :: Word32, ()) You have to add a type annotation to greetz like (greetz :: Array D42 Word8) which limits your string to a length of 42 bytes. If you do not know the length, better use withStringNul. I implemented the current behavior, because the former implementation was unsafe. I'm sorry, the type signature for withStringNul is over my head. withStringNul :: String - (forall n. (Nat n) = Global (Array n Word8) - CodeGenModule a) - CodeGenModule a On the LLVM side, I'm looking to simply create a string constant I can pass in, such as ConstantArray::get(..). I *think* withStringNul will generate code to build a runtime-length determined string? Sorry, I'm a little thick. call puts tmp -- Throw away return value. ret () return func My attempts at figuring out what type-level has to do with this, and how to satisfy it have so far proven unsuccessful. type-level provides type level integers, and thus allows for static checking of sizes, such as the number of bits of an integer type. Thanks -- sorry -- I'm guessing it's to make sure we're generating valid code? Cheers, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] hGetContents: resource exhausted
On Wed, Jul 28, 2010 at 4:21 PM, Donn Cave d...@avvanta.com wrote: Quoth Lally Singh lally.si...@gmail.com, Ah, it's getting EAGAIN from fds created from prior pipe() calls. The other sides look like they were DUP2'd to fds 01, I'm guessing for a fork/exec(). Well, that isn't a big surprise - it's the way you would expect to get EAGAIN. So ... evidently the GHC runtime is broken somehow on OpenSolaris? I personally have no idea what's going on there, but while we're waiting for someone with a clue, here are a couple more random things to try: Have you compiled and run separately? instead of runghc Setup.hs configure ghc --make Setup Setup configure It shouldn't make any difference on its own, but then you can try options on the compile, like ghc -threaded, and runtime flags like Setup +RTS -V0 -RTS I suggest that because it cuts down on signal interrupts from the runtime, and your symptoms suggest a signal interrupt. That fixed the signal problem! Sadly that just gets me far enough to Setup +RTS -V0 -RTS build, which runs ghc, which then dies from the same signal problem :-( ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] hGetContents: resource exhausted
Ah, it's getting EAGAIN from fds created from prior pipe() calls. The other sides look like they were DUP2'd to fds 01, I'm guessing for a fork/exec(). On Mon, Jul 26, 2010 at 10:23 PM, Brandon S Allbery KF8NH allb...@ece.cmu.edu wrote: -BEGIN PGP SIGNED MESSAGE- Hash: SHA1 On 7/26/10 21:01 , Donn Cave wrote: Much easier (but not guaranteed to help) you might be able to see the actual error, at the system call level, if you can trace system calls. The utility for this varies by platform, but e.g. strace or ktrace. On Solaris it's truss. - -- brandon s. allbery [linux,solaris,freebsd,perl] allb...@kf8nh.com system administrator [openafs,heimdal,too many hats] allb...@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH -BEGIN PGP SIGNATURE- Version: GnuPG v2.0.10 (Darwin) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkxOQw4ACgkQIn7hlCsL25WYwQCgxNsPquHR3fyqZxTAGJTeYlfQ +wEAn38Z6Phapm4vMgmgp1/0Y/GDqu2Y =KanW -END PGP SIGNATURE- ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
Re: [Haskell-cafe] hGetContents: resource exhausted
On Mon, Jul 26, 2010 at 7:59 AM, Ben Millwood hask...@benmachine.co.uk wrote: On Mon, Jul 26, 2010 at 10:47 AM, Magnus Therning mag...@therning.org wrote: On Sun, Jul 25, 2010 at 23:47, Lally Singh lally.si...@gmail.com wrote: Hey all, This is on OpenSolaris. Simple attempts to build cabal packages give me this error, and I don't know what it means. Here's an example: [07/25 18:51::la...@sol type-level]$ runghc Setup.hs configure Configuring type-level-0.2.4... Setup.hs: fd:8: hGetContents: resource exhausted (Resource temporarily unavailable) Setup.hs: fd:8: resource exhausted Does anyone know what this means? I'm trying to just get the llvm bindings installed (requiring mtl type-level). A quick guess: you're running out of filedescriptors. The error gives the descriptor number as 8, so I don't think that's terribly likely :) Resource temporarily unavailable is the string that corresponds to the EAGAIN error, which is typically presented by operations that would block being used in non-blocking mode. I have no idea what would cause it to be a fatal error in a hGetContents call. I checked that my ulimit was 8 :-) It was 256, I knocked it up to 65,535, but that didn't help. I've got my own source build of ghc. Is there anything I can put in to track down what's going on? Thanks for all the help folks, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] hGetContents: resource exhausted
Hey all, This is on OpenSolaris. Simple attempts to build cabal packages give me this error, and I don't know what it means. Here's an example: [07/25 18:51::la...@sol type-level]$ runghc Setup.hs configure Configuring type-level-0.2.4... Setup.hs: fd:8: hGetContents: resource exhausted (Resource temporarily unavailable) Setup.hs: fd:8: resource exhausted Does anyone know what this means? I'm trying to just get the llvm bindings installed (requiring mtl type-level). Cheers, -Lally ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
[Haskell-cafe] Building gtkhs, OpenSolaris x86
Hey folks, I know it seems an obtuse OS to build on, but trust me, it's pretty nice despite the hassles. I'm getting these three errors (repeated a few times) while building gtkhs-0.9.13 on ghc 6.8.3, and was hoping for any suggestions on where to go from here: tools/c2hs/base/general/Map.hs:16:7: Could not find module `Data.Map': it is a member of package containers-0.1.0.2, which is hidden tools/c2hs/base/errors/Errors.hs:44:0: Failed to load interface for `Position': Use -v to see a list of the files searched for. glib/System/Glib.hs:13:0: Failed to load interface for `System.Glib.UTFString': Use -v to see a list of the files searched for. What did I screw up? Is there something else I should load? Maybe an older version of gtkhs? ghc? Thanks for any help! -- H. Lally Singh Ph.D. Candidate, Computer Science Virginia Tech ___ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe