Cleanup logic a little.  Check args first, then try to create the
object.  This avoids creation + decref if bogus arguments are passed.
diff --git a/Modules/shamodule.c b/Modules/shamodule.c
index 32ac02d..8bfcec7 100644
--- a/Modules/shamodule.c
+++ b/Modules/shamodule.c
@@ -491,16 +491,15 @@
     SHAobject *new;
     unsigned char *cp = NULL;
     int len;
-	
-    if ((new = newSHAobject()) == NULL)
-        return NULL;
 
     if (!PyArg_ParseTupleAndKeywords(args, kwdict, "|s#:new", kwlist,
                                      &cp, &len)) {
-        Py_DECREF(new);
         return NULL;
     }
 
+    if ((new = newSHAobject()) == NULL)
+        return NULL;
+
     sha_init(new);
 
     if (PyErr_Occurred()) {